我有一个顶级的PageView,它会在路由发生变化时重新渲染.我有很多嵌套在这个PageView中的嵌套子视图.如果我要重新渲染PageView,我是否需要删除/取消绑定所有嵌套的子视图以及PageView,还是只需要删除/取消绑定PageView?如果我需要删除/取消绑定所有子视图,那么最好的方法是什么?
Der*_*ley 35
是的,您需要正确删除和取消绑定它们:
执行此操作的简单方法是在父视图中存储子视图的数组.然后在close父视图的方法中,遍历数组并close在子视图上调用一个方法:
ParentView = Backbone.View.extend({
initialize: function(){
this.childViews = [];
},
render: {
for (var i = 0; i < 10; i++){
var childView = new ChildView();
// do stuff with the child view
this.childViews.push(childView);
}
},
close: function(){
this.remove();
this.unbind();
// handle other unbinding needs, here
_.each(this.childViews, function(childView){
if (childView.close){
childView.close();
}
})
}
});
Run Code Online (Sandbox Code Playgroud)
close当您准备好删除/替换它时,请务必在父视图上调用该方法.这将确保所有孩子都得到适当的清理(假设所有孩子都有自己的close方法).