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