Javascript 如何在应用程序注销时完全清除$rootScope

Javascript 如何在应用程序注销时完全清除$rootScope,javascript,angularjs,node.js,angularjs-directive,Javascript,Angularjs,Node.js,Angularjs Directive,我在许多控制器和服务中使用了$rootScope和$scope。我参考了许多关于清除所有$scope和$rootScope值的堆栈溢出解决方案。但它对我不起作用(解决方案如$rootScope=undefined或$rootScope='')。请帮我解决。您应该从$roorScope删除您的属性。应该是: delete $rootScope.yourProperty1; delete $rootScope.yourProperty2; 如果有许多属性,则应使用: for (var prop i

我在许多控制器和服务中使用了$rootScope和$scope。我参考了许多关于清除所有$scope和$rootScope值的堆栈溢出解决方案。但它对我不起作用(解决方案如$rootScope=undefined或$rootScope='')。请帮我解决。

您应该从
$roorScope
删除您的属性。应该是:

delete $rootScope.yourProperty1;
delete $rootScope.yourProperty2;
如果有许多属性,则应使用:

for (var prop in $rootScope) {

   // Check is not $rootScope default properties, functions
   if (typeof $rootScope[prop] !== 'function' && prop.indexOf('$') == -1 && prop.indexOf('$$') == -1) {

      delete $rootScope[prop];

   }
} 

您应该从
$roorScope
中删除您的属性。应该是:

delete $rootScope.yourProperty1;
delete $rootScope.yourProperty2;
如果有许多属性,则应使用:

for (var prop in $rootScope) {

   // Check is not $rootScope default properties, functions
   if (typeof $rootScope[prop] !== 'function' && prop.indexOf('$') == -1 && prop.indexOf('$$') == -1) {

      delete $rootScope[prop];

   }
} 

您可以执行以下操作

$rootScope.$on("logout", function(){
  $rootScope.userRole= undefined;});

您可以执行以下操作

$rootScope.$on("logout", function(){
  $rootScope.userRole= undefined;});

如果希望清除$rootScope上所有已定义的属性,并希望保留$rootScope附带的初始值,可以通过删除$rootScope上所有不以$开头的属性来实现。因为所有初始属性都是用$定义的

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

另外,请查看此项。

如果您希望清除$rootScope上所有已定义的属性,并希望保留$rootScope附带的初始值,可以通过删除$rootScope上所有不以$开头的属性来执行此操作。因为所有初始属性都是用$定义的

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

另外,请看一下。

谢谢您的回答。但我有100多个属性。如果我像你回答的那样删除我的个人财产,它就会起作用。我在问是否有其他方法可以清除所有$rootScope和$Scope,而不是使用delete清除单个属性请参阅我的更新答案,我认为您应该使用for循环删除您的属性:)谢谢您的回答。但我有100多个属性。如果我像你回答的那样删除我的个人财产,它就会起作用。我在问是否有其他方法可以清除所有$rootScope和$Scope,而不是使用delete清除单个属性见我更新的答案,我认为您应该使用for循环删除您的属性:)我已清除了整个缓存并尝试了dude。。尝试此代码没有意义。$rootScope.$on(“注销”,function(){$rootScope.userRole=undefined;});我已经清除了所有的缓存,并尝试了伙计。。尝试此代码没有意义。$rootScope.$on(“注销”,function(){$rootScope.userRole=undefined;});请在问题中插入文本代码,而不是图像代码。您还应该将任何错误消息作为文本包含在内,因为“它不起作用”不是问题的良好描述。请将代码作为文本而不是图像插入问题中。您还应该将任何错误消息作为文本包含在内,因为“它不起作用”并不能很好地描述问题。