当范围被销毁时,我是否需要"监视"范围变量?

 尕丑de眸_879 发布于 2023-02-08 18:35

以下是角度的文档.我正在观察几个变量,这些变量是构建过滤字符串的范围的一部分ng-grid.当这个范围被销毁时,我是否需要通过调用返回值来取消监视它们$scope.$watch,或者是否足以破坏范围?如果被监视的变量不属于此范围,该怎么办?

如果我没有"监视"与范围一起被销毁的变量,我是否会泄漏内存/导致性能问题.


$destroy()

从父作用域中删除当前作用域(及其所有子作用域).删除意味着调用$digest()将不再传播到当前范围及其子项.删除还意味着当前范围符合垃圾收集的条件.

$destroy()通常使用的指令,如ngRepeat用于管理环的展开.

在销毁范围之前,$destroy会在此范围内广播一个事件.应用程序代码可以注册一个$destroy事件处理程序,使其有机会执行任何必要的清理.

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

1 个回答
  • 快速查看源代码将向您显示返回的删除函数$watch没有做任何异国情调.它只是从scope.$$watchers数组中删除一个项目.

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

    无论您正在观看什么,手表本身都存储在示波器中.这就是为什么,为了使用$watch,你不打电话angular.$watch,而是你打电话$scope.$watch.

    2023-02-08 18:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有