私はBackbone.jsを使用して、ステータスが異なるアイテム(電子メール受信者)のリストをレンダリングしています。確認済み、保留中など。リストがレンダリングされた後、ユーザがそれらをフィルタリングするためのオプションがあり、ユーザは全ての受信者をリストすることができ、または確認された受信者のみをリストすることができる。項目(受信者)は、自然Backbone.js:すべてのビューをクリアする最も良い方法
私のアプローチは、フィルタイベントでの..ですコレクションに格納されています。
- すべてクリアアイテムのビューのアプリビュー呼び出しから
- コレクション内filterOnStatus機能すべてのモデルを返し、それらをビューに追加します。
手順2はうまくいきます。しかし、コレクションのビューのすべてのアイテムをクリアするにはどうすればよいでしょうか。
Todoのサンプルアプリケーション(http://documentcloud.github.com/backbone/examples/todos/index.html)では、同様の処理を行います。アプリケーションビューでは、次のコードを使用して、完了したすべてのアイテムをリストから消去します。
clearCompleted: function() {
_.each(Todos.done(), function(todo){ todo.destroy(); });
return false;
},
ここでの違いは、実際のモデルを削除することです。そのモデルのビューは、ビューを削除する破棄イベントをリッスンします。
モデルを保持したいです。
これを解決する最良の方法は何ですか。モデルの中でビューへの参照を保存し、モデルを反復してビューを削除する必要がありますか?
モデルの属性をフィルタリングしたい場合は、より良いアプローチがありますか?
しかし、このアプローチでは、私の見解のトラックが緩やかです(すべてのリスト項目はビューです)。いいえ? – Sebastian
トラックを紛失してどういう意味ですか?なぜあなたはそれを保持したいですか? –
私はビューオブジェクトを意味しました、メモリ的に。私はview.remove()を呼び出していません。その上に。しかし、DOMからDOM表現を削除すると、自動的にバックボーン・ビューが削除されるというあなたの意見はありますか? – Sebastian