我正試圖在AngularJS中實現一個簡單的指令。特別是我想開發一個加載器按鈕,在按下時改變它的方面,我想在需要它的應用程序的所有頁面中重用它。從AngularJS中的指令中刪除事件監聽器
我已經閱讀了開發人員指南:
「有AngularJS發出一些特殊事件,當已經編制與角的編譯器DOM節點被破壞,它會發出$破壞事件。同樣,當一個AngularJS範圍被銷燬時,它會向監聽範圍廣播一個$ destroy事件,通過監聽這個事件,你可以移除可能導致內存泄漏的事件監聽器,註冊到範圍和元素的監聽器會自動清理銷燬了,但是如果你在一個服務上註冊了一個監聽器,或者在一個沒有被刪除的DOM節點上註冊了一個監聽器,那麼你必須自己清理它,否則你可能會引入內存泄漏。「
在我的鏈接功能,我已經把這個代碼的事件偵聽器:
var onLoaderButtonClickEvent = element.on('click', function(){
//Some stuff
});
現在,我有沒有考慮到作爲一個DOM元素上的監聽(所以我必須將其刪除)或不?我有點困惑。
我認爲我沒有刪除監聽器,因爲它是在「元素」上。這是對的嗎?
THX所有
爲什麼你認爲你將不得不刪除監聽器? –
原因我不瞭解之前編寫的文檔中提到的「元素」和DOM節點之間的區別。我認爲像element.on('click',someFunction)這樣的事件不會被刪除,而像$('#somenode')。on('click',somefunction)這樣的事件必須被刪除。這是對的嗎? – ira