Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Backbone.js 如何从视图访问木偶路由器?_Backbone.js_Marionette - Fatal编程技术网

Backbone.js 如何从视图访问木偶路由器?

Backbone.js 如何从视图访问木偶路由器?,backbone.js,marionette,Backbone.js,Marionette,因为我使用requirejs来保持代码模块化,所以我希望能够访问视图中的路由器实例 window.appRouter = new Router({ controller: this.routerController }); 显然,我不想使用Windows,但仍然可以在我的应用程序中使用路由器 做这件事的最佳实践或木偶方式是什么?您可以将路由器存储在应用程序实例上 例如,您在应用程序启动时对路由器进行实例验证: onStart: function() { this.router = ne

因为我使用requirejs来保持代码模块化,所以我希望能够访问视图中的路由器实例

window.appRouter = new Router({ controller: this.routerController });
显然,我不想使用Windows,但仍然可以在我的应用程序中使用路由器


做这件事的最佳实践或木偶方式是什么?

您可以将路由器存储在应用程序实例上

例如,您在应用程序启动时对路由器进行实例验证:

onStart: function() {
    this.router = new Router({ controller: this.routerController });
}
通常的做法是将应用程序实例存储为全局实例,在这种情况下,您可以通过窗口访问router inst

如果您使用木偶.Module-您可以通过模块回调中的第二个参数访问它:

MyApp.module("module", function(mod, app){
    //app.router
});
我看到的最后一种方法是将路由器放在一个单独的模块中

MyApp.module("router", function(mod, app){
    //var ctrl = { some: controller }
    app.router = new Router({ controller: ctr });
});

所以在这种情况下,您可以通过App.router或App.modulerouter访问路由器

,也可以使用require.js或browserify获取它。它比globalvar更简洁,但只有在有充分理由不使用内置模块系统的情况下才有意义。