1
我有一個視圖,我在兩個單獨的選項卡上創建了兩次。在這個視圖的每個實例中,我都有一些子視圖。每次創建父視圖時,都會在其內部創建新的子視圖。與此同時,它會將這些子視圖數組被調用,如:在主幹中正確銷燬視圖時出現問題
var ParentView = Backbone.View.extend({
itemViews: [],
initialize: function(options) {
var self = this;
// following creates the specific collection of data
// is this what I should be using to destroy the subviews
// rather than the itemViews array?
this.collection = options.collection;
this.collection.on('add', self._createSubView, self);
render: function(){// render stuff},
_createSubView: function() {
view = new SubView();
this.itemViews.push(view);
},
});
的問題是,中的父視圖中的一個,有時,我需要摧毀它的子視圖。這是通過做:
_.each(self.itemViews, function (view) {
Utils.destroyView(view); // Utility function that destroys the views.
});
的問題,我面對的是,每次我實例化一個新的父視圖,而不是創建一個新的陣列itemViews
,骨幹就追加到一個叫itemViews整個陣列,就如同每個兩個父視圖共享相同的itemViews
數組。因此,不僅僅是破壞適當的選項卡的視圖,而是破壞兩個選項卡的視圖。有沒有:
- 更好的方式來創建子視圖的列表,使每個列表是唯一的父視圖?
- 比使用這種類型的列表銷燬父視圖的子視圖更好的方法?
謝謝!
還有一些代碼會有幫助。如何調用_createSubView?你從哪裏調用'_.each'循環來銷燬視圖?一個jsfiddle會更好。 –
@NiranjanBorawake謝謝!添加了代碼以顯示'_createSubView'調用。 _.each是一個重置無限滾動的函數,因爲子視圖中的項目使用過濾器進行修改,所以我需要在視圖修改時重置視圖中的項目。讓我知道如果你需要更多,我會粘貼jsfiddle! – YPCrumble