我目前正在尝试为视图实现销毁/删除方法,但我无法获得适用于所有视图的通用解决方案。
我希望有一个事件可以附加到控制器上,这样当一个新请求通过时,它会破坏以前的视图,然后加载新的视图。
有没有办法做到这一点而不必为每个视图构建一个删除函数?
我目前正在尝试为视图实现销毁/删除方法,但我无法获得适用于所有视图的通用解决方案。
我希望有一个事件可以附加到控制器上,这样当一个新请求通过时,它会破坏以前的视图,然后加载新的视图。
有没有办法做到这一点而不必为每个视图构建一个删除函数?
我必须绝对确定该视图不仅从 DOM 中删除,而且还完全不受事件的约束。
destroy_view: function() {
// COMPLETELY UNBIND THE VIEW
this.undelegateEvents();
this.$el.removeData().unbind();
// Remove view from DOM
this.remove();
Backbone.View.prototype.remove.call(this);
}
对我来说似乎有点矫枉过正,但其他方法并没有完全做到这一点。
在不知道所有信息的情况下……您可以将重置触发器绑定到您的模型或控制器:
this.bind("reset", this.updateView);
当您想要重置视图时,触发重置。
对于您的回调,请执行以下操作:
updateView: function() {
view.remove();
view.render();
};
这是我一直在用的。没有看到任何问题。
destroy: function(){
this.remove();
this.unbind();
}
根据当前的 Backbone 文档....
视图.remove()
从 DOM 中移除一个视图及其 el,并调用 stopListening 来移除该视图已经监听的任何绑定事件。