在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) { /* ... */ }
答案 0 :(得分:4)
Angular 1.2.X现在patches JQuery to call $destroy
但是,我没有测试过我是否得到了我之前看到的相同结果。
(感谢@KumarHarsh在评论中指出这一点)
不,$element.remove()
不会删除范围,可能是因为范围仍被其他范围引用。
作为证明,您可以从嵌套控制器中删除作用域元素,然后从父控制器加载作用域并检查$$childHead
以查看子作用域仍然存在。
Here is a plunk to demonstrate
此外,您可以使用Batarang plugin for Chrome
查看内存中的范围