Angularjs 如何重置$rootScope?

Angularjs 如何重置$rootScope?,angularjs,rootscope,angularjs-rootscope,Angularjs,Rootscope,Angularjs Rootscope,用户注销后,我需要清理$rootScope。我尝试了$rootScope.$destroy(),但没有成功。是否有方法循环遍历$rootScope中的所有值并将其删除,或者有方法简单地重置它?从rootScope中删除变量 delete $rootScope.variablename 实际上,$destroy()方法在$rootScope上不起作用(请参阅)。我通过调用$rootScope.$broadcast(“$destroy”)而不是$destroy()在我们的应用程序上删除整个Ang

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

从rootScope中删除变量

delete $rootScope.variablename
  • 实际上,
    $destroy()
    方法在$rootScope上不起作用(请参阅)。我通过调用
    $rootScope.$broadcast(“$destroy”)
    而不是
    $destroy()
    在我们的应用程序上删除整个Angular实例来解决这个问题。这样,所有析构函数的调用都是相同的

  • 至于$destroy元素事件,我必须承认,几天前我甚至都没有意识到……我在文档中的任何地方都没有看到它,而且我正在使用jQuery,所以根据我的说法,它对我来说无论如何都不起作用

参考自

这是一个很长的描述,但是您可以使用以下方法手动清除
RootScope

选择1 清除rootScope变量

$rootScope.currentStatus = ""; //or undefined 
选择2 如果要删除整个$rootscope对象,

 $rootScope=undefined //or empty 

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

for (var prop in $rootScope) {
    if (prop.substring(0,1) !== '$') {
        delete $rootScope[prop];
    }
}
通过将其作为函数添加到
$rootScope
上,可以使调用变得简单

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

从1.6开始,情况似乎不再如此