私はかなり長い間バックボーンを使用してきましたが、独自のイベントと動作を持つビューの動的リストを取得するたびに、それらをどのように保存するべきか疑問に思います。私には2つの方法があり、それらについての私の考えは..
- ビューを別のビューに内部的に保存します。これには適切なフィルタリングのオーバーヘッドが必要ですが、DOM からは独立しています + メモリ使用量が改善される可能性があります
- ビューを生成し、それらをDOMに配置し、jqueryでビューのイベントをトリガーするだけです
$('#someviewid').trigger('somecustomfunction');
-書き込みとアクセスは簡単ですが、依存関係がわかりにくく、DOMノードを削除するだけでビュー/モデルが削除されるかどうかはわかりません
あなたは何をお勧めします?
新しいビューが内部 html に追加されるだけで、storyViews 自体は忘れられます。しかし、このリストから特定のビューにアクセスしたい場合は、id や data などの DOM 属性を使用してから、jquery アクセサーでビュー関数をトリガーする必要があります
Devclub.Views.StoriesList = Backbone.View.extend({
initialize: function () {
this.collection.bind('reset', this.reset, this);
this.collection.fetch();
},
reset: function (modelList) {
$(this.el).html('');
var me = this;
$.each(modelList.models, function (i, model) {
me.add(model);
});
},
add: function (model) {
var contact_model = new Devclub.Models.Story(model);
var view = new Devclub.Views.Story({
model: contact_model
});
var storyView = view.render().el;
$(this.el).append(storyView);
}
});
対照的に、いくつかのビュー メソッドを直接呼び出したい場合は、代わりに同じビュー リストを配列に格納し、それを反復処理することができます。