我需要一个解决方案,以角度来改变和访问基于会话的商店中的值。
我需要在代码部分中访问它:
app.run(function($rootScope, $state, $window, $alert, AuthService) {
$rootScope.$on(
在我的控制器中,在我的HTML中,到处都是。我没有找到解决方案。我尝试了服务(使用ngStorage)
appServices.factory('AuthService', function ($rootScope, $localStorage){
return {
set: function(entidy, value) {
$storage = $localStorage;
$storage[entidy] = value;
}
get: function(entidy) {
if (typeof $rootScope.$storage != 'undefined') {
return $rootScope.$storage[entidy];
}
}
}
});
写这样的服务:
AuthService.set(email, 'test@test.de');
AuthService.set(token, '12345');
AuthService.set(auth, true);
但是Getter / Setter很糟糕,这不是20世纪90年代。以上也行不通。有任何想法吗?我是否需要一个服务来缓存sessionStorage中的数据?请记住,我需要在根范围(以及其他任何地方)访问它。
因此$scope.$storage = $localStorage
会失败。
是的,这个问题是特定于ngStorage的,但对于Angular自己的cacheFactory,同样的设置应该是正确的。
答案 0 :(得分:4)
我认为您不需要将$localStorage
分配给$rootScope
。每当您需要使用$localStorage
时,只需将其注入您的代码:
appServices.factory('AuthService', function ($localStorage){
return {
set: function(entidy, value) {
$localStorage[entidy] = value;
},
get: function(entidy) {
return $localStorage[entidy];
}
}
});
如果您确实需要通过$rootScope
访问该服务,请在.run
中再试一步:
app.run(function($rootScope, $localStorage) {
$rootScope.storage = $localStorage;
});