0

我正在为一个学校项目开发一个小型网络应用程序,我将用户数据存储在本地存储中,如下所示:

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 时,我得到未定义。

谢谢你的帮助。

4

3 回答 3

0

请确保 localStorageService 正常运行。我不确定 localStorageService 的实现,但请注意 localStorage 仅支持字符串值,您必须将 response.data.result 转换为字符串。在 chrome 中,您可以使用开发人员工具-> 资源选项卡并查看“本地存储”并查看存储是否实际发生。

理想情况下,我会将其发布为评论,但在此站点上还没有足够的声誉来做到这一点..

于 2016-04-02T07:43:10.917 回答
0

您的代码看起来不错但是本地存储服务的实现可能存在问题。您应该使用众所周知的 ngStorage 服务来完成这项工作。 https://github.com/gsklee/ngStorage

于 2016-04-02T07:46:32.717 回答
0

过了一会儿,我设法解决了这个问题。似乎从来没有关于 localStorageservice,我所做的是重新安排这个:

angular.module('app-gp').run(["$rootScope", "localStorageService", "$state", function($rootScope, localStorageService, $state) {

它奏效了……

于 2016-06-28T23:23:10.157 回答