2016-06-21 186 views
1

我的工作MEAN应用程序,用户登录成功后,我想在localStorage的保存返回的用户数据在浏览器中,这样我可以使用它进一步,我使用ngStorage模块。我可以在浏览器的本地存储中保存用户数据。这是我在的LoginController代码:

function loginController($http, $location, $rootScope,$localStorage){ 
    var vm = this; 
    vm.signIn = signIn; 

function signIn() {  
    $http({ 
     url: '/login', 
     method: 'post', 
     data: vm.login 
    }).then(function(respond) { 
    if(respond.data){ 
     $localStorage.userData = respond.data; 
     var info = $localStorage.userData;   
     $rootScope.userInfo = info; 
     $location.path('/dashboard/'+respond.data._id); 
     }else{ 
     $location.path('/'); 
     } 

没有当我在另一个控制器我可以得到存储在$ localStorage的价值访问$ rootScope。即使在我的Chrome浏览器中,我可以从检查数据存储在$ localStorage中看到。 但是当我刷新我页我可以看到仍然存在的localStorage但不是在我的$ rootscope在浏览器中的数据。我的rootScope在页面刷新后获取空数据,我真的很感激任何有关如何访问这些数据并存储在rootScope中的建议。

+0

你可以在使用ng-init模板初始化的时候触发一些初始化函数,并从存储中恢复数据。或者你可以写状态解析函数做同样的.. –

+0

$ rootScope行为像JavaScript变量,即它得到您使用$ rootScope当你重装location.why破坏时,数据可以很容易地通过$ localStorage的在任何点访问你的申请。 –

+0

@AlexRumbaNicked我们可以访问它设置一个控制器上,并在另一个控制器 – jsgeek

回答

0

正如我曾经说过,当你重新加载位置就像任何javascript变量$rootScope被摧毁。您的localStorage数据在整个应用程序中的任何地方都可以访问,直到您破坏,移除或重置它为止。

function loginController($http, $location, $rootScope, $localStorage) { 
       var vm = this; 
       vm.signIn = signIn; 

       function signIn() { 
        $http({ 
          url: '/login', 
          method: 'post', 
          data: vm.login 
         }).then(function(respond) { 
           if (respond.data) { 
            $localStorage.userData = respond.data; 
            var info = $localStorage.userData; 
            $rootScope.userInfo = info; 
            $location.path('/dashboard/' + respond.data._id); 
           } else { 
            $location.path('/'); 
           } 

     function anyController($scope, $localStorage) { 
             console.log($localStorage.userData); 
            } 

其中重定向到主状态,如果没有用户数据,其中要通过$localStorage在模块运行功能访问所述数据的一个例子。

angular.module("yourAppName") 
    .run(function ($rootScope, $state,$localStorage) { 
    $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){ 
     if(toState.name == 'app') return; 
     if (!$localStorage.userData){ 
     $state.transitionTo("app"); 
     event.preventDefault(); 
     return; 
     } 
    }); 
    }); 
0

检索本地存储的用户数据时,应用程序重新加载

app.run(function($rootScope){ 
    if(localStorage['userData']) 
    { 
    $rootScope.userData = JSON.parse(localStorage.getItem('userData')); 
    } 
}); 
相关问题