Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularjs生命周期中,作用域何时自然地被销毁_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 在angularjs生命周期中,作用域何时自然地被销毁

Javascript 在angularjs生命周期中,作用域何时自然地被销毁,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我在angular模块中经常看到这种类型的代码 scope.$on('$destroy', function(){ //undind listener here }); 我的理解是,每当作用域即将销毁时,它都会广播一个$destroy事件,允许您清除作用域销毁后可能继续运行的任何代码,这将导致内存泄漏 我的问题是,angularjs应用程序中的作用域何时会自然被破坏。我在网站上找到的所有文档都是,您可以手动调用$destroy删除范围,但这似乎表明它将在某个时候自动发生。什么时候会这样?范

我在angular模块中经常看到这种类型的代码

scope.$on('$destroy', function(){
  //undind listener here
});
我的理解是,每当作用域即将销毁时,它都会广播一个
$destroy
事件,允许您清除作用域销毁后可能继续运行的任何代码,这将导致内存泄漏


我的问题是,angularjs应用程序中的作用域何时会自然被破坏。我在网站上找到的所有文档都是,您可以手动调用
$destroy
删除范围,但这似乎表明它将在某个时候自动发生。什么时候会这样?

范围在编译期间绑定到HTML元素$compile需要一个作用域来编译元素。元素可以嵌套。一些获得新的作用域,另一些继承

从DOM中删除元素时,作用域将被销毁

确切地说:AngularJS在执行清理后重新定义并调用
$destroy
处理程序的
jQuery.cleanData
,也称为销毁作用域

当从DOM中删除元素时,将调用
cleanData
函数


当您更改路由/状态时,上一个控制器的$scope将自动销毁。是否还有其他时间?是的。如图所示,此事件可由任何作用域实例调用,例如指令作用域。谢谢,这非常有帮助。