将.off()与emberjs一起使用'willDestroyElement()

时间:2012-06-22 17:51:32

标签: jquery ember.js

提前感谢您查看此内容。

基本上,我正在调用didInsertElement()并将事件绑定到DOM $(document).on(...)

我正努力成为一名彬彬有礼的开发人员并使用willDestroyElement致电$(document).off(...)

但是,由于我可能有多个绑定到$(document)的东西,我需要指定要删除的功能。当我这样做时,jQuery劫持Ember的this并使用它自己的HTMLElement

JsFiddle: http://jsfiddle.net/brennan/H65Ax/

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

像这样修改你的代码:

didInsertElement: function(){
    var self = this;
    //storing `click` handler on new property `addedListener`
    $(document).off('click', self.addedListener = function(){
        self.set('isActive', false);
    });
},
willDestroyElement: function(){
    var self = this;
    $(document).off('click', self.addedListener);
},