我在列表視圖中渲染骨幹模型的集合,其中每個模型都有自己的listItemView,如。主幹 - 展開視圖和殭屍
var els = [];
_.each(this.collection.models, function(model){
var view = new TB_BB.RequestItemView({model : model});
els.push(view.render().el);
});
$('#request-list').append(els);
每個ItemsView都可以在點擊事件(對服務器進行調用時)上展開,例如。
showDetails : function() {
var m = new TB_BB.RequestDetails({id : this.model.get('id')});
var outerthis = this;
m.fetch({success : function() {
var det = new TB_BB.RequestDetailsView({model : m, el : outerthis.el, current : outerthis, template : '#request-expanded-template'});
det.render();
}});
}
所以邏輯就是這個展開視圖在當前項目的el中打開。您可能已經注意到,我正在傳遞對當前視圖的引用(outerthis),這是爲了避免在關閉展開視圖時讓這個視圖出現殭屍。
因此,在展開視圖中,我們有一個'隱藏'方法,它應該隱藏展開的視圖並顯示原始元素,例如(其中current是對非展開視圖的引用)。
hideDetails : function() {
$(this.el).empty();
this.options.current.render();
}
我很確定這不是最好的方法 - 但不知道最好的方法是什麼?在這種情況下,在調用hidedetails時(因爲它引用了原始視圖)沒有殭屍。然而,我猜測每次'showDetails'視圖被調用並且關閉了一個新的殭屍存在?任何人都可以啓發什麼是擴大列表視圖的更好方式?
有趣的做法 - 謝謝 – Xrender 2012-03-19 11:02:27