我需要清除所有的$scope
值,同时执行一些操作。
对于例如:如果我点击"Signout"
按钮重定向到"signin"
页面,那么所有的$范围或$ rootScope会话值应该被清除。
我该如何做到这一点?
我需要清除所有的$scope
值,同时执行一些操作。
对于例如:如果我点击"Signout"
按钮重定向到"signin"
页面,那么所有的$范围或$ rootScope会话值应该被清除。
我该如何做到这一点?
你可以做到以下几点:
$rootScope = $rootScope.$new(true);
$scope = $scope.$new(true);
功能$new
正在创造一个新的作用域继承了父变量。 true
阻止继承。
但这不是正确的方法,因为如果你使用上面的东西,你应该手动引导控制器功能并重新创建范围树。
This可能很有用,但想法是将存储初始化数据的想法存储在某些变量中,然后在将其分配时复制到显示的变量中。
正确的解决方法是手动清除各范围的每个属性上注销事件是这样的: 注销事件:
$rootScope.$emit("logout");
凤云事件:
$rootScope.$on("logout", function(){
$rootScope.myData = undefined;
});
或者所建议的评论,使用服务,然后进行清理。
You not want delete scope
var authScope =['authLogo','currentPath','pageTitle','app'];
for (var prop in $rootScope) {
if (prop.substring(0,1) !== '$') {
if(authScope.indexOf(prop) ==-1)
delete $rootScope[prop];
}
}
在这里你可以找到一些方法来实现这一目标:http://stackoverflow.com/questions/13085024/reset-a-model-with-angular-js – frhd
@frhd。感谢它清楚。使用这个例子,我们可以清除特定控制器中的$ scope值。但是我想在签出期间清除所有控制器中的所有$ scope值。可能吗?如果是的话,给我你的建议/解决方案.. – Gnik
我不认为有一种方法可以清除所有的范围。如http://stackoverflow.com/a/18527334/2491198所述,您需要通知所有范围删除其数据。避免必须这样做的一种方法是将数据存储在** DataService **中,并在注销时将其清除。 – frhd