2014-02-18 36 views
0

我已經在我的控制器中編寫代碼來清理$ destroy事件中的資源。編寫單元測試來驗證我的清理方法的操作非常簡單,但有理由懷疑這一點:我的應用程序何時會獲得$ destroy事件?我可以在瀏覽器中以用戶身份執行哪些操作以使應用程序獲得$ destroy事件?

回答

0

從文檔

刪除從父 範圍的電流範圍(及其所有的孩子)。刪除意味着調用$ digest()將不再傳播到當前作用域及其子級。刪除還意味着 當前範圍有資格進行垃圾回收。

$ destroy()通常由指令使用,如ngRepeat for 管理循環的展開。

就在範圍銷燬之前,此範圍內的 廣播$ destroy事件。應用程序代碼可以註冊$ destroy事件處理程序 ,這將使其有機會執行任何必要的清理。

請注意,在AngularJS中,還有一個$ destroy jQuery事件,其中 可用於清理DOM綁定,然後將元素從 DOM中刪除。

http://docs.angularjs.org/api/ng/type/$rootScope.Scope

這似乎有一對夫婦的破壞有關$的東西。我對這個的基本理解是,任何時候一個範圍不再需要從某個視圖導航,現在用於該視圖的控制器/範圍不再需要,或者某個DOM元素被移除$ destroy被調用。我見過的這些實際使用的地方是清理計時器或監聽器,以便內存可以被垃圾收集。

相關問題