AngularJS-由$scope创建的作用域何时执行$new()已删除.垃圾收集器或Angular负责处理它吗
AngularJS - When does a scope created by $scope.$new() removed. Does the garbage collector or Angular takes care of it?
我想知道$scope是如何创建作用域的$在下面的场景中删除了new()。
我的场景-$scope创建了一个新的作用域$new(),添加了一些属性,并将其传递给角度脚本模板
<script type="text/ng-template" id="row-details.html">
<tr><td>code</td></tr>
</script>
其动态地创建新的表行。所以在我的例子中,每一个<tr>
行都得到一个新的作用域。每当双击html表中的行或列时,我都会动态创建表行。
现在,在一些事件中,例如,在某个父行或列或任何地方"双击",我删除了通过模板创建的新行,该新行通过$scope具有新的作用域$new(),我的问题是这是否也会删除对$scope的引用$new()scope,否则我将不得不手动删除它,或者在某个时候垃圾收集器将删除它,因为使用它的表行已从DOM中删除,所以没有引用它。
对以上内容的总体关注是,我希望确保应用程序中没有内存泄漏。
所以总的来说,我有两个问题——
- 一旦从DOM中删除了相关的DOM行,angular或垃圾收集器会自动删除新的作用域吗
- 我如何通过Chrome开发工具或任何其他方式测试这一点,无论引用是否被删除,并且该特定代码没有内存泄漏
如果您需要更多详细信息,请告诉我。谢谢
当有人调用其$destroy
方法时,作用域将被删除。
当其祖先之一被移除时,该范围也会被移除。
"删除";意味着作用域及其子级将不再接收摘要调用,此外,还应该进行垃圾收集。
来自$new
和$destroy
方法范围的文件。
$new(隔离,父级)
创建新的子作用域。
父作用域将传播
$digest()
事件。可以使用$destroy()
从作用域层次结构中删除该作用域。当希望作用域及其子作用域与父作用域永久分离,从而通过调用停止参与模型更改检测和侦听器通知时,必须在作用域上调用
$destroy()
。$destroy()
从父作用域中删除当前作用域(及其所有子作用域)。删除意味着对$digest()的调用将不再传播到当前作用域及其子作用域。删除还意味着当前作用域有资格进行垃圾收集。
具体来说,对于您的问题,您必须在创建的子作用域上调用$destroy
。仅仅删除DOM元素不会触发它——子作用域仍然在作用域层次结构中,并且有对它的引用
plunker-用于说明
- 使用相同的上传器angular上传多个文件
- 信任Javascript垃圾收集器
- Chrome扩展:链接收集器
- AngularJS-由$scope创建的作用域何时执行$new()已删除.垃圾收集器或Angular负责处理它吗
- 是在window.location重定向后调用的垃圾收集器
- 在 JavaScript 上添加/删除侦听器(垃圾收集器)
- jscript 垃圾收集器的速度有多快?三.js矩阵旋转
- Undersatnding JavaScript 不可变变量和垃圾收集器
- 有没有办法在基于 webkit 的浏览器中强制使用 Javascript 垃圾收集器
- spidermonkey上的垃圾收集器问题..JS_AnchorPtr()
- JIRA问题收集器
- javascript垃圾收集器处理全局变量吗?
- Javascript -垃圾收集器计时器
- 内部引用对象上的Javascript垃圾收集器
- 瞄准右HTML选择器angular js
- 我需要删除dom碎片或将垃圾收集器删除它们
- Javascript中的循环引用/垃圾收集器
- 如何帮助ie的有缺陷的垃圾收集器
- JS垃圾收集器是否清除堆栈内存?
- 如何检测对象是否被垃圾收集器删除