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

时间:2015-04-16 09:03:56

标签: backbone.js marionette

由于我使用require js来保持我的代码模块化,我希望能够在我的视图中访问路由器实例。

window.appRouter = new Router({ controller: this.routerController });

显然,我不想使用窗口,但仍然可以在我的应用中使用路由器。

这样做的最佳做法或牵线木偶可能是什么?

1 个答案:

答案 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(“路由器”)访问路由器