Ad *_*lor 82 javascript javascript-events backbone.js
我目前正在尝试为视图实现一个destroy/remove方法,但我无法获得适用于所有视图的通用解决方案.
我希望有一个事件可以附加到控制器上,这样当一个新的请求通过它时会破坏以前的视图,然后加载新的视图.
有没有办法做到这一点,而无需为每个视图构建一个删除功能?
sda*_*ley 161
我必须绝对确定视图不仅仅是从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);
}
Run Code Online (Sandbox Code Playgroud)
对我来说似乎有些过分,但其他方法并没有完全解决问题.
jos*_*ire 47
在不知道所有信息的情况下......您可以将重置触发器绑定到模型或控制器:
this.bind("reset", this.updateView);
Run Code Online (Sandbox Code Playgroud)
当您想重置视图时,触发重置.
对于您的回调,请执行以下操作:
updateView: function() {
view.remove();
view.render();
};
Run Code Online (Sandbox Code Playgroud)
Bas*_*nni 20
我知道我迟到了,但希望这对其他人有用.如果你使用的是主干v0.9.9 +,你可以使用,listenTo和stopListening
initialize: function () {
this.listenTo(this.model, 'change', this.render);
this.listenTo(this.model, 'destroy', this.remove);
}
Run Code Online (Sandbox Code Playgroud)
stopListening被自动调用remove.你可以在这里和这里阅读更多
这就是我一直在使用的.没有看到任何问题.
destroy: function(){
this.remove();
this.unbind();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106170 次 |
| 最近记录: |