2012-06-22 35 views
0

感謝提前看這個。使用.off()和emberjs'willDestroyElement()

從本質上講,我打電話didInsertElement()和事件結合DOM $(document).on(...)

我想成爲一個有禮貌的開發商和利用willDestroyElement調用$(document).off(...)

但是,因爲我可能有多種東西綁定到$(document)我需要指定刪除哪個函數。當我這樣做,jQuery的劫持Ember的this與它自己的HTMLElement

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

是否有這樣做的更好的辦法?

+0

我很好奇,爲什麼你在做整個'$(文件)。在(...)''$(文件).off(... )'首先?這最後的目的是什麼? – pangratz

+0

嘿@pangratz我相信這是關閉點擊下拉本身以外的任何東西的下拉菜單。 我現在使用相同的方法爲某些視圖添加拖放文件上傳。 當然,我很想知道我是否以奇怪的方式做這件事,如果有更好的選擇。謝謝! –

回答

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); 
}, 
+0

太棒了。非常感謝。 –