由于我使用require js来保持我的代码模块化,我希望能够在我的视图中访问路由器实例。
window.appRouter = new Router({ controller: this.routerController });
显然,我不想使用窗口,但仍然可以在我的应用中使用路由器。
这样做的最佳做法或牵线木偶可能是什么?
答案 0 :(得分:0)
您可以在应用程序实例上存储路由器。
例如,您启动应用程序上的路由器实例:
onStart: function() {
this.router = new Router({ controller: this.routerController });
}
将Application实例存储为全局的常见做法,在这种情况下,您可以通过window
访问路由器实例。
如果您使用Marionette.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.module(“路由器”)访问路由器