取消绑定与Ember.run.bind绑定的事件?

时间:2015-06-11 15:35:09

标签: ember.js

我有一个必须对视口更改做出反应的组件。

天真的方法是绑定一个jQuery resize监听器,但这可能会弄乱Ember运行循环。

最佳做法是使用Ember.run.bind

这很好用,但我想知道一旦组件不再活动,如何取消绑定这样的事件?

1 个答案:

答案 0 :(得分:9)

想出来了。 Ember.run.bind实际上并不需要unbind方法,你可以解除绑定jQuery事件。

代码示例:

export default Ember.Component.extend({
  _resizeListener: null,

  didInsertElement: function(){
    // keep a reference to the event listener
    this._resizeListener = Ember.run.bind(this, this.preformLayout);
    Ember.$(window).on('resize', this._resizeListener);
  },

  willDestroy: function(){
    if(this._resizeListener){
      // whenever component gets destroyed, unbind the listener
      Ember.$(window).off('resize', this._resizeListener);
    }
  }
});
相关问题