我在角度模块中看到了很多类型的代码
scope.$on('$destroy', function(){
//undind listener here
});
我的理解是,每当范围即将被销毁时,它会广播一个$destroy
事件,允许您清除在范围被破坏后可能继续运行的任何代码,这会导致内存泄漏。
我的问题是,什么时候范围自然会在angularjs app中被破坏。我可以从网站上找到的所有文档都是您可以手动调用$destroy
来删除范围,但这似乎表明它会在某个时刻自动发生。那会是什么时候?
答案 0 :(得分:1)
在编译期间,范围与HTML元素相关联。 $ compile需要一个范围来编译一个元素。元素可以嵌套。有些人获得了新的范围,其他继承。
从DOM中删除元素时,范围会被破坏。
准确地说:在$destroy
上调用jQuery.cleanData
处理程序,AngularJS在清理后重新定义并调用它 - 也就是在破坏范围时。
cleanData
函数。