删除DOM元素会删除关联的范围吗?

时间:2012-11-20 20:56:43

标签: angularjs

在Angular中,范围与DOM元素相关联。如果您致电$element.remove()$element.scope().$destroy()也会被调用吗?或者开发人员是否负责自行清理示波器?

这让我觉得删除DOM元素会自动删除范围:

angular.js

/////////////////////////////////////////////
// jQuery mutation patch
//
//  In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a
// $destroy event on all DOM nodes being removed.
//
/////////////////////////////////////////////

function JQLitePatchJQueryRemove(name, dispatchThis) { /* ... */ }

1 个答案:

答案 0 :(得分:4)

编辑:

Angular 1.2.X现在patches JQuery to call $destroy

但是,我没有测试过我是否得到了我之前看到的相同结果。

(感谢@KumarHarsh在评论中指出这一点)


旧答案(Angular 1.0.X):

不,$element.remove()不会删除范围,可能是因为范围仍被其他范围引用。

作为证明,您可以从嵌套控制器中删除作用域元素,然后从父控制器加载作用域并检查$$childHead以查看子作用域仍然存在。

Here is a plunk to demonstrate

此外,您可以使用Batarang plugin for Chrome

查看内存中的范围