angularjs – 当范围被破坏时,是否需要“展开”范围变量?

前端之家收集整理的这篇文章主要介绍了angularjs – 当范围被破坏时,是否需要“展开”范围变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
下面是有角度的文档.我正在看几个属于此范围的变量,以构建一个用于ng-grid的过滤器字符串.当这个范围被破坏时,我需要通过从$scope.$watch调用返回值来解除它们,还是破坏足够的范围来处理它?如果被观看的变量不属于此范围,该怎么办?

如果我不“篡改”正在被破坏的变量与范围,我会泄漏内存/导致性能问题.

$摧毁()

从父范围中移除当前范围(及其所有子项).删除意味着对$digest()的调用将不再传播到当前范围及其子项.删除也意味着当前范围有资格进行垃圾回收.

$destroy()通常由诸如ngRepeat的指令用于管理循环的展开.

在范围被破坏之前,在此范围上广播$destroy事件.应用程序代码可以注册一个$destroy事件处理程序,它将有机会执行任何必要的清理.

请注意,在AngularJS中,还有一个$destroy jQuery事件,可以在元素从DOM中删除之前清除DOM绑定.

快速浏览源代码显示$watch返回的删除功能不会出现异常情况.它只是从范围中删除一个项目.$$watchers数组.

因此,一旦范围被破坏,整个阵列将随之而来,垃圾收集器将为您清理所有内容.

无论您在观看什么,手表本身都存储在范围内.这就是为什么,为了使用$watch,你不要调用angle.$watch,而是调用$scope.$watch.

猜你在找的Angularjs相关文章