我需要在删除Backbone.js视图时触发一个函数。我想有点像去构造函数。下面的代码是我写的代码片段;我知道它不会起作用。但是,我确实记得在过去看过如何编写执行此操作的函数的视频教程。我需要运行解构函数的原因是在删除视图时清除视图中设置的间隔。
ViewWeather = Backbone.View.extend({ interval: setInterval(function() {console.log('interval fire');}, 1000), // made up function deconstructor: function () { // if the view is removed clearInterval(this.interval); } }); var viewweather = new ViewWeather();
答案 0 :(得分:8)
这篇博文应该会为您提供更好的信息
最值得注意的部分
Backbone.View.prototype.close = function(){
this.remove();
this.unbind();
if (this.onClose){
this.onClose();
}
}
然后
MyView = Backbone.View.extend({
initialize: function(){
this.model.bind("change", this.render, this);
},
render: function(){ ... },
onClose: function(){
this.model.unbind("change", this.render);
}
});
答案 1 :(得分:4)
我不确定我是否理解正确,但您展示的方法似乎是正确的:
dispose: function(id) {
clearInterval(this.interval);
this.remove();
}
你将不得不自己打电话,例如一个事件:
initialize: function(opts) {
router.bind('route:leave', this.dispose, this);
},
评论后编辑:这应该可以重载remove
remove: function() {
clearInterval(this.interval);
Backbone.View.prototype.remove.call(this);
}