【问题标题】:How to reset $rootScope?如何重置 $rootScope?
【发布时间】:2015-09-03 13:53:40
【问题描述】:

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

【问题讨论】:

    标签: angularjs rootscope angularjs-rootscope


    【解决方案1】:

    从 rootScope 中删除变量

    delete $rootScope.variablename
    

    【讨论】:

      【解决方案2】:
      • 确实,$destroy() 方法不适用于 $rootScope(请参阅here)。在我们的应用程序上消除整个 Angular 实例时,我通过调用 $rootScope.$broadcast("$destroy") 而不是 .$destroy() 来解决这个问题。这样,所有的析构函数都会被调用。

      • 至于元素 $destroy 事件,我不得不承认几天前我什至没有意识到它……我在文档中的任何地方都没有看到它,而且我正在使用 jQuery,所以根据 @ 987654322@ 反正我也不管用。

      来自here的参考

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

      选项 1

      清除 rootScope 变量

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

      选项 2

      如果你想删除整个 $rootscope 对象,

       $rootScope=undefined //or empty 
      

      【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多