是否可以關閉或停止骨幹路由器聽其定義的路由?有沒有辦法停止骨幹路由器?
我問,因爲我一直在測試Backbone SubRoute(https://github.com/ModelN/backbone.subroute),設置一個應用程序有很多空間,用戶可以運行許多子應用程序。
因此,我已經定義瞭如下鯛AA主路由器,subrouter結構:
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,並且沒有調用SubApp的開始由MainRouter製成。
所以,我想知道是否有一種方法可以停止或禁用取消綁定觸發的骨幹路由器的路由。
hi Jakob。感謝您的回覆,我會嘗試AppRouter,除了我正在第一次學習/嘗試Marionette之外,我沒有理由不使用它。 – jay
夠公平=) - 讓我知道我能否以任何方式幫助你。這是一個很好的解決方案,我真的很推薦在BackboneRails上觀看截屏視頻。幫助我很多,它給你一種構建你的應用程序的方式。 –
謝謝,本週我會抽出時間看他們。AppRouter是一種很好的DRYer方式(似乎)在Marionette應用程序中運行路由,因爲它消除了僅需調用單個控制器操作的多個路由器操作的需要。然而,我仍然認爲我需要一些嵌套的路由 - 使子應用路由器聽取他們的路由,而忽略路由的基礎「空間/:ID」段。我會繼續評估AppRouter,也許我太過於複雜。 – jay