2016-06-21 184 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')); 
    } 
}); 
相關問題