Backbone.js在.remove()上触发事件

我需要在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();

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

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

最显着的部分

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

});

我不确定我是否正确理解你,但是你展示的方法似乎是正确的:

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); 
}  
链接地址: http://www.djcxy.com/p/63093.html

上一篇: Backbone.js fire event on .remove()

下一篇: Backbone.js: how to unbind from events, on model remove