1
我一直在使用骨幹網很長一段時間,每次我得到動態列表的視圖都有自己的事件和行爲,我不知道應該如何存儲它們。我有兩種方法,我對他們的想法是......什麼是存儲和訪問backbone.js視圖列表的更好方法?
- 將視圖內部存儲在另一個視圖中。這需要適當的過濾開銷,但是獨立於DOM +可能有更好的內存使用
- 只需生成視圖,將它們放入DOM並使用jquery觸發視圖事件,如
$('#someviewid').trigger('somecustomfunction');
- 易於編寫和訪問,但依賴關係很難看到,如果我只是刪除DOM節點,我不確定該視圖/模型會被刪除。
您會推薦什麼?
所以這裏是擴展的第二個例子,其中新的視圖只是附加到內部html和storyViews本身被遺忘。但是,如果我想從這個名單訪問特定的觀點,我將不得不使用DOM屬性,如ID或數據,然後觸發視圖的功能與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);
}
});
相反,我可以代替存儲在同一個視圖列表一個數組並重復它,如果我想直接調用一些視圖方法
您能否包含一些代碼?這個問題有點抽象,很難理解,你究竟是什麼意思。 – jevakallio 2013-02-21 11:29:38
查看https://github.com/marionettejs/backbone.marionette上的'CollectionView' ...它的目標是在解決您遇到的問題方面進行詳盡的練習 – 2013-02-21 11:49:35