私は2つのビューを持つbackbonejsアプリケーションを持っています。それは一種の次のようになります。Backbonejs:ビューが削除されたときにコレクションバインディングをアンバインドするにはどうすればいいですか?
<body>
<header></header>
<div id="content"></div>
</body>
ビューアプリをロードされるたびに完全に#contentの内容を上書きすることで、現在のビューを上書きします。
// Like this...
$('#content').html(new primaryView().render());
// ...and this.
$('#content').html(new secondaryView().render());
アプリケーションにはグローバルコレクションがあります。
App.Collection();
セカンダリビューは、グローバルコレクションに応じて変更されます。そのため、関数はビューの初期化関数でApp.Collectionの 'add'イベントにバインドされます。
App.Collection.bind('add', function(){
console.log('Item added');
});
私の問題が発生します。セカンダリビューが読み込まれるたびに、新しい関数がApp.Collectionのaddイベントにバインドされます。プライマリビューからセカンダリビューに3回移動すると、アイテムがApp.Collectionに追加されるたびに3回呼び出されます。
私は間違っていますか? ビューに初期化されていない関数があった場合、どうすればいいのか分かります。 ビューがロードされた後にビューを削除しなかった場合、どうすればそれを実行できるかがわかります。 Jqueryのような名前空間のイベントができたらどうすればいいのか分かります。 (バインドする前にバインド解除することによって)。
Derick Baileyの記事が見つかりました。まともな解決策のように聞こえる。 http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/ – janjarfalk