【发布时间】:2013-09-23 07:53:58
【问题描述】:
是否可以关闭或阻止骨干路由器监听其定义的路由?
我问是因为我一直在测试 Backbone SubRoute (https://github.com/ModelN/backbone.subroute),设置一个有很多空间的应用程序,用户可以在其中运行许多子应用程序。
因此,我定义了一个主路由器,子路由器结构遵循粗略:
MainRouter = Backbone.Router.extend
routes:
"":"root"
"spaces/:id/:module(/*subroute)":"invokeModule"
root: () ->
console.log "root trigger"
invokeModule: (id, module, subroute) ->
that = this
GigaApp.module(module).start({nested_root: "spaces/#{id}/#{module}"})
SubAppRouter = Backbone.SubRoute.extend
routes:
"":"app_home"
app_home: () ->
console.log 'at sub app home'
SubApp.on "start", (options) ->
SubApp.router = new SubAppRouter(options.nested_root)
这种通用结构从第一次为空间初始化子应用程序开始工作,因为 MainRouter 启动 SubApp,它使用正确的嵌套路由初始化其路由器。随后,在 SubAppRouter 中定义的其他路由也触发正常。
但是,如果您导航到不同的空间(具有不同的 id),然后导航回第一个空间,则此结构会中断,因为已经为该空间初始化的 SubAppRouter 会覆盖 MainRouter,并且不会调用启动子应用程序来自 MainRouter。
所以,我想知道是否有办法停止或禁用取消绑定主干路由器的路由触发。
【问题讨论】:
标签: backbone.js marionette backbone-routing