如何重置$ rootScope?

时间:2015-06-18 04:51:28

标签: angularjs rootscope angularjs-rootscope

用户注销后,我需要清理我的$ rootScope。我试过了$rootScope.$destroy(),但这并没有成功。有没有办法循环遍历$ rootScope中的所有值并删除它们或方法来简单地重置它?

3 个答案:

答案 0 :(得分:9)

初始化时,您可能希望保留$rootScope附带的默认值。由于它们都以$开头,因此您可以删除所有不以$开头的属性。

for (var prop in $rootScope) {
    if (prop.substring(0,1) !== '$') {
        delete $rootScope[prop];
    }
}

您可以通过将其添加为$rootScope上的函数来轻松调用。

$rootScope.$resetScope = function() {
    ...
}

答案 1 :(得分:4)

  
      
  • 确实,$destroy()方法无法在$ rootScope上工作(请参阅here)。在我们的应用程序中删除整个Angular实例时,我通过调用$rootScope.$broadcast("$destroy")而不是.$destroy()来解决这个问题。这样,所有析构函数都被调用。

  •   
  • 至于元素$ destroy事件,我不得不承认我几天前甚至都没有意识到它......我在文档中的任何地方都没有看到它,加上我&# 39; m使用jQuery所以根据here它无论如何都不适合我。

  •   

来自here

的参考资料

这是一个很长的描述,但您可以通过以下方式手动清除RootScope

选项1

清除rootScope变量

$rootScope.currentStatus = ""; //or undefined 

选项2

如果要删除整个$ rootscope对象,

 $rootScope=undefined //or empty 

答案 2 :(得分:2)

从rootScope中删除变量

delete $rootScope.variablename