バックボーン ルーターが定義されたルートをリッスンするのを終了または停止することは可能ですか?
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 から SubApp の開始の呼び出しが行われないため、この構造が壊れます。 .
したがって、バックボーン ルーターのルート トリガーを停止またはアンバインドする方法があるかどうか疑問に思っています。