2012-12-12 31 views
14

AngularJS中斷開綁定的正確方法是什麼?AngularJS - 刪除綁定以避免內存泄漏

我有一個無角應用程序,它正在加載使用angularjs進行數據綁定的組件。在某個時候,我想銷燬組件並希望確保沒有內存泄漏。我如何告訴角從DOM的那部分中刪除所有事件偵聽器?

$(node).remove()$(node).remove()會訣竅,還是角度做內存中的其他事情需要清理......?任何其他技巧,避免在角度內存泄漏將不勝感激。

回答

10

只是刪除一個具有類似於remove()之類的作用域的DOM元素不會擺脫內存中的作用域。您可以通過刪除元素並在Batarang中查找,或者通過獲取父範圍並檢查它的子元素來確認。你會看到範圍仍然存在....所以你也想在範圍本身上調用$destroy()

More information about $destroy() can be found here

編輯:我不知道的一件事是,如果它完全刪除範圍,或者只是斷開它,讓JavaScript GC照顧其餘。

+0

感謝您的快速響應! –

+0

文檔說,還有一個jQuery事件來解除綁定作用域和DOM元素,但不提供示例用例。它只是一個查找元素範圍,調用銷燬方法,然後使用jquery remove()?的情況?這似乎很奇怪這個功能並不存在作爲一個完整的功能內角! – sidonaldson

+0

如果您將作用域分配給window.leak,然後在作用域上設置控制檯日誌$ on('destroy',...),您將看到destroy被調用,但仍可以從泄漏中訪問作用域。 –