Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在控制器上的路线上呼叫木偶?_Javascript_Backbone.js_Marionette - Fatal编程技术网

Javascript 在控制器上的路线上呼叫木偶?

Javascript 在控制器上的路线上呼叫木偶?,javascript,backbone.js,marionette,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);

我的路由器如下-

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);
    }
});
var RouterController = Marionette.Controller.extend({
   test: function() {
       console.log("test route called");
   },

   onRoute: function(name, path) {
     // This onRoute is not being called.
   }
});
我的路由器控制器如下-

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);
    }
});
var RouterController = Marionette.Controller.extend({
   test: function() {
       console.log("test route called");
   },

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

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

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

    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函数。

您不能使用路由器上的controller属性并通过此属性调用它。控制器?哦,没有找到facepalm