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

Nic*_*ner 10 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) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

Ben*_*esh 4

编辑:

Angular 1.2.X 现在修补 JQuery 以调用 $destroy

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

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


旧答案(Angular 1.0.X):

不,$element.remove()不会删除作用域,大概是因为该作用域仍然被其他作用域引用。

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

这是一个要演示的 plunk

此外,您还可以使用Chrome 的 Batarang 插件查看内存中的范围