バックボーンルータに次のコードがあると、ユーザが#test/map
または#test/images
に直接ナビゲートすると、最初にルート#test
に接続された機能が実行されることを確認できますか?バックボーン - サブルートの機能の前にルート機能を実行
invokeTest
関数は、サブビュー "マップ"と "イメージ"がレンダリングされるコンテナを持つ親ビューを作成します。だから私は基本レイアウトビューは、サブビューをレンダリングする前にレンダリングされていることを確認する必要があります。
var Workspace = Backbone.Router.extend({
routes: {
"test": "invokeTest", // #test
"test/map": "invokeTestMap", // #test/map
"test/images": "invokeTestImages" // #test/images
},
invokeTest: function() {
//render base-layout
console.log("test function executed");
},
invokeTestMap: function() {
//render map view using element created with the base layout template
console.log("Map function executed");
},
invokeTestImages : function(){
//render images view using element created with the base layout template
console.log("images function executed");
}
});
今私はサブビューのためのコンソールログを取得し、ルート関数が呼び出されることはありません。
私はベースレイアウトをレンダリングするために 'initialize'メソッドを使用していました。今、私はログインビューを持っているので、私はもうこのアプローチを使用することはできません。あなたの2番目の提案は、ルータがベースレイアウトビューへの参照を持っていて、すでに存在しない場合にのみ – randomguy04
@ randomguy04はい、一般的にはどのビューもルータで初期化されているのを見たことがあります –
このようにして、うまくいきましたが、私は電話をしなければならないので、この新しいメソッドは、baselayoutがそれに依存するすべてのビューに存在するかどうかをチェックします。参照のためには、これを 'execute'メソッドで使用することはできません。ルートのナビゲーション)私のアプリのすべてのビューがこのbaselayoutを必要とするわけではなく、ログインビューがあります。 – randomguy04