【发布时间】:2015-09-03 13:53:40
【问题描述】:
用户注销后,我需要清理我的 $rootScope。我试过$rootScope.$destroy() 但这并没有成功。有没有办法遍历 $rootScope 中的所有值并删除它们或简单地重置它的方法?
【问题讨论】:
标签: angularjs rootscope angularjs-rootscope
用户注销后,我需要清理我的 $rootScope。我试过$rootScope.$destroy() 但这并没有成功。有没有办法遍历 $rootScope 中的所有值并删除它们或简单地重置它的方法?
【问题讨论】:
标签: angularjs rootscope angularjs-rootscope
从 rootScope 中删除变量
delete $rootScope.variablename
【讨论】:
确实,
$destroy()方法不适用于 $rootScope(请参阅here)。在我们的应用程序上消除整个 Angular 实例时,我通过调用$rootScope.$broadcast("$destroy")而不是.$destroy()来解决这个问题。这样,所有的析构函数都会被调用。至于元素 $destroy 事件,我不得不承认几天前我什至没有意识到它……我在文档中的任何地方都没有看到它,而且我正在使用 jQuery,所以根据 @ 987654322@ 反正我也不管用。
来自here的参考
描述很长,但是您可以通过以下方式手动清除RootScope
清除 rootScope 变量
$rootScope.currentStatus = ""; //or undefined
如果你想删除整个 $rootscope 对象,
$rootScope=undefined //or empty
【讨论】:
您可能希望在初始化时保留$rootScope 附带的默认值。由于它们都以$ 开头,您可以删除所有不以$ 开头的属性。
for (var prop in $rootScope) {
if (prop.substring(0,1) !== '$') {
delete $rootScope[prop];
}
}
您可以通过将其作为函数添加到$rootScope 来轻松调用。
$rootScope.$resetScope = function() {
...
}
【讨论】: