我在我的控制器中编写代码来清理$ destroy事件上的资源。编写单元测试以验证我的清理方法的操作是很简单的,但有理由怀疑:我的应用程序何时会获得$ destroy事件?我可以在浏览器中做什么来让我的应用获得$ destroy事件?
答案 0 :(得分:0)
来自文档
从父级移除当前范围(及其所有子级) 范围。删除意味着不再调用$ digest() 传播到当前范围及其子级。删除也意味着 当前范围符合垃圾收集条件。
$ destroy()通常由诸如ngRepeat for之类的指令使用 管理循环的展开。
在范围被销毁之前,广播一个$ destroy事件 这个范围。应用程序代码可以注册$ destroy事件处理程序 这将使它有机会进行任何必要的清理。
请注意,在AngularJS中,还有一个$ destroy jQuery事件 可以在删除元素之前用于清理DOM绑定 DOM。
http://docs.angularjs.org/api/ng/type/$rootScope.Scope
似乎有一些与$ destroy有关的事情。我对此的基本理解是,任何时候不再需要从某个视图导航范围,现在不再需要用于该视图的控制器/范围,或者删除了一些DOM元素$ destroy。我见过的这个地方实际上是用来清理定时器或听众,以便记忆可以被垃圾收集。