如何在单个函数中清除所有AngularJS $ scope和$ rootScope值?

Gni*_*nik 10 angularjs angular-ui angularjs-scope angular-ui-router

我需要$scope在执行某些操作时清除所有值.

例如:如果我单击"Signout"按钮重定向到"signin"页面,则应清除会话中的所有$ scope$ rootScope值.

我怎样才能做到这一点?

Mic*_*ael 16

您可以执行以下操作:

$rootScope = $rootScope.$new(true);
$scope = $scope.$new(true);
Run Code Online (Sandbox Code Playgroud)

该函数$new正在创建一个继承父项变量的新范围.true阻止继承.

但这不是正确的方法,因为如果你使用上面的东西,你应该手动引导控制器功能并重新创建范围树.

可能是有用的,其中的想法是存储初始化的数据存储在一些变量中,然后,当分配复制到显示的变量时.

正确的解决方案是手动清除注销事件中每个范围内的每个属性,如下所示:注销事件:

$rootScope.$broadcast("logout");
Run Code Online (Sandbox Code Playgroud)

抓住活动:

$rootScope.$on("logout", function(){
      $rootScope.myData = undefined;
});
Run Code Online (Sandbox Code Playgroud)

或者如评论中所建议的那样,使用服务然后进行清理.