我正在为一个学校项目开发一个小型网络应用程序,我将用户数据存储在localstorage上,如下所示:
UserService.login($scope.user).then(function (response){
if(response.data.Error){
$scope.credentialsError = true;
}else{
$rootScope.cliente = response.data.result;
localStorageService.set('cliente', $rootScope.cliente);
$location.path('/dashboard');
}
});
只要我留在页面中,一切正常,用户仍然在$ rootScope中做这件事。当我重新加载时问题出现了。 在启动时我运行:
angular.module('app-gp').run([
"$rootScope", "localStorageService", "$state", function($state,localStorageService, $rootScope) {
$rootScope.cliente = localStorageService.get('cliente');
}]);
这似乎可以从本地存储中正确获取用户数据。但是,当我从控制器或模板请求$ rootScope.cliente时,我得到了未定义。
感谢您的帮助。
答案 0 :(得分:0)
请确保localStorageService正常运行。我不确定localStorageService的实现,但请注意localStorage只支持字符串值,您必须将response.data.result转换为string。在chrome中,您可以使用开发人员工具 - >资源选项卡,然后查看"本地存储"并查看存储是否实际发生。
理想情况下,我会将此作为评论发布,但在此网站上没有足够的声誉来做到这一点..
答案 1 :(得分:0)
您的代码看起来很好但是本地存储服务的实现可能会有问题。 您应该使用众所周知的ngStorage服务来完成这项工作。 https://github.com/gsklee/ngStorage
答案 2 :(得分:0)
过了一会儿,我设法解决了这个问题。 似乎从来没有关于localStorageservice,我所做的是重新排列这个:
angular.module('app-gp').run(["$rootScope", "localStorageService", "$state", function($rootScope, localStorageService, $state) {
它有效......