Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.remove()上的Backbone.js火灾事件_Backbone.js_Intervals - Fatal编程技术网

.remove()上的Backbone.js火灾事件

.remove()上的Backbone.js火灾事件,backbone.js,intervals,Backbone.js,Intervals,我需要在删除Backbone.js视图时启动一个函数。我猜有点像反构造器。下面的代码是我写的一段代码;我知道这行不通。然而,我确实记得在过去看过一个视频教程,介绍如何编写一个函数来实现这一点。我需要运行反构造函数的原因是在删除视图时清除视图内部设置的间隔 ViewWeather = Backbone.View.extend({ interval: setInterval(function() {console.log('interval fire');}, 1000),

我需要在删除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(); ViewWeather=Backbone.View.extend({ 间隔:setInterval(函数(){console.log('interval fire');},1000), //组合函数 解构器:函数(){ //如果视图已删除 clearInterval(这个.interval); } }); var viewweather=新的viewweather();
我不确定我是否正确理解您,但您所展示的方法似乎是正确的:

dispose: function(id) {
    clearInterval(this.interval);
    this.remove();
}
您必须自己调用dispose,例如通过事件:

initialize: function(opts) {
    router.bind('route:leave', this.dispose, this); 
},
注释后编辑:这将导致过载
删除

remove: function() { 
    clearInterval(this.interval);
    Backbone.View.prototype.remove.call(this); 
}  

这篇博文应该会给你一些更好的信息

最值得注意的部分

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);
  }

});

我说的是在销毁或删除视图时运行函数。这是检测路由何时更改,但感谢您的帮助。您可能会过载
remove()
我实际上获取了主干网的开发版本,并在视图上编辑了remove函数。也许我应该在github上创建一个fork。lol,现在当视图被删除时,uninitialize运行以进行清理。因此,就像您向视图中添加initialize一样,您也可以添加uninitialize。太棒了,兄弟!remove:function(){this.$el.remove();if(this.uninitialize){this.uninitialize();}在调用this.remove()时返回this;}它会自动调用this.undelegateEvents()吗?它会删除委托事件吗?(类哈希中的事件)