我正在创建一个单页应用程序,我对 Backbone 还很陌生。我在创建多个使用相同 wrapper-div 的 View 时遇到问题。
我的设置:
我已经为所有 View 添加了关闭功能:
Backbone.View.prototype.close = function(){
this.remove();
this.off();
if (this.onClose){
this.onClose();
}
}
我有一个 wrapper-div,我想在其中渲染 View 、删除它们并渲染新 View 。所以我的 SetupView 看起来像这样:
app.SetupView = Backbone.View.extend({
el: '#my_view_wrapper',
...
});
在我交换 View 的函数中,我像这样关闭当前(打开的) View :
var v = this.model.get('view');
v.close();
问题
我的问题是我有多个 View 使用同一个 wrapper-div。但是当我关闭一个 View 时,这个 wrapper-div 似乎被删除了,我尝试创建的下一个 View 找不到这个 div。
我想有一个简单的解决方案吗?我想重复使用相同的包装器,并且只删除其中的 View ,而不是包装器本身。
最佳答案
作为补充(供以后引用):另一种选择是覆盖 subview remove
以便它只是清空 $el
而不是删除它。例如。
remove: function() {
this.$el.empty().off(); /* off to unbind the events */
this.stopListening();
return this;
}
我个人更喜欢这个,因为它不需要插入没有实际用途的包装元素。
关于javascript - backbone remove view 删除 el,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083724/