【发布时间】:2014-01-09 23:51:24
【问题描述】:
以下是来自 Angular 的文档。我正在查看属于此范围的几个变量,以便为ng-grid 构建过滤器字符串。当这个作用域被破坏时,我是否需要通过调用$scope.$watch 的返回值来取消监视它们,或者作用域的破坏是否足以处理它?如果被监视的变量不属于这个范围怎么办?
如果我不“取消监视”与作用域一起被销毁的变量,我是否会泄漏内存/导致性能问题。
$destroy()
从父作用域中移除当前作用域(及其所有子作用域)。移除意味着对$digest() 的调用将不再传播到当前作用域及其子作用域。删除还意味着当前范围符合垃圾回收条件。
$destroy() 通常由诸如ngRepeat 之类的指令用于管理循环的展开。
就在一个作用域被销毁之前,一个$destroy 事件在这个作用域上广播。应用程序代码可以注册一个$destroy 事件处理程序,这将使它有机会执行任何必要的清理。
请注意,在 AngularJS 中,还有一个 $destroy jQuery 事件,可用于在从 DOM 中删除元素之前清理 DOM 绑定。
【问题讨论】: