在控制器上打电话给Marionette onRoute?

时间:2015-04-16 06:48:19

标签: javascript backbone.js marionette

我的路由器如下 -

var Router = Backbone.Marionette.AppRouter.extend({

    appRoutes: {
        'test': 'test'
    },

    onRoute: function(name, path) {
        // this route is being called. This works
        console.log("on route called", name, path);
    }
});

我的routerController如下 -

var RouterController = Marionette.Controller.extend({
   test: function() {
       console.log("test route called");
   },

   onRoute: function(name, path) {
     // This onRoute is not being called.
   }
});

如何在控制器上调用onRoute而不是路由?我想在控制器上调用onRoute,因为我的所有路由功能都在控制器上调用。

1 个答案:

答案 0 :(得分:0)

您可以通过传递到路由器的选项对象访问控制器:

    var Router = Backbone.Marionette.AppRouter.extend({

    appRoutes: {
        'test': 'test'
    },

    onRoute: function(name, path, arguments) {
        if (_.isFunction(this.options.controller.onRoute)) {
                this.options.controller.onRoute(name, path, arguments);
            }
    }
});

请记住,每次触发路线时,都会调用控制器上的onRoute功能。