我如何“集成测试”我的AngularJS $ destroy事件处理程序?

时间:2014-02-18 18:28:35

标签: angularjs

我在我的控制器中编写代码来清理$ destroy事件上的资源。编写单元测试以验证我的清理方法的操作是很简单的,但有理由怀疑:我的应用程序何时会获得$ destroy事件?我可以在浏览器中做什么来让我的应用获得$ destroy事件?

1 个答案:

答案 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。我见过的这个地方实际上是用来清理定时器或听众,以便记忆可以被垃圾收集。