加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 09:15:49 所属栏目:安全 来源:网络整理
导读:下面是有角度的文档.我正在看几个属于此范围的变量,以构建一个用于ng-grid的过滤器字符串.当这个范围被破坏时,我需要通过从$scope.$watch调用返回值来解除它们,还是破坏足够的范围来处理它?如果被观看的变量不属于此范围,该怎么办? 如果我不“篡改”正在被
下面是有角度的文档.我正在看几个属于此范围的变量,以构建一个用于ng-grid的过滤器字符串.当这个范围被破坏时,我需要通过从$scope.$watch调用返回值来解除它们,还是破坏足够的范围来处理它?如果被观看的变量不属于此范围,该怎么办?

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

$摧毁()

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

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读