10

在 Angular 中,作用域与 DOM 元素相关联。如果你打电话$element.remove()$element.scope().$destroy()最终也会被打电话吗?还是开发人员自己负责清理范围?

这让我认为它删除一个 DOM 元素应该自动删除范围:

角.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) { /* ... */ }
4

1 回答 1

4

编辑:

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

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

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


旧答案(Angular 1.0.X):

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

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

这是一个演示

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

于 2012-11-21T03:22:02.533 回答