2016-05-30 82 views
0

我想在$localStorage所有對象保存爲以下幾點:

$localStorage.userData.currentUser = data.name; 
$localStorage.userData.devId= data.id; 
$localStorage.userData.userRole = data.roles[0].name; 
$localStorage.userData.userId = data.user_id; 

控制器代碼:

myApp.controller('loginController', ['$rootScope', '$scope', 'Auth', '$state', '$localStorage', 
    function ($rootScope, $scope, Auth, $state, $localStorage) { 

     function successAuth(res) { 
      $localStorage.token = res; 
      $scope.currentUser = $localStorage.token.name; 
      console.log("res: ", res); 

      Auth.setUserData(res, function(){ 
       $scope.error = 'No User data available'; 
      }); 


      if ($localStorage.token) { 
       $state.go("dashboard"); 
       $scope.isLogin = true; 
      } else { 
       alert("Invalid username or password"); 
      } 
     } 

     $scope.signin = function() { 
      var formData = {device_id: myip, platform: "WEB", provider: "EMAIL", uid: $scope.login.username, access_token: "", password: $scope.login.password}; 
      Auth.signin(formData, successAuth, function() { 
       $rootScope.error = 'Invalid credentials'; 
       console.log($rootScope.error); 
      }); 
     }; 

     $scope.isLogin = !angular.isUndefined($localStorage.token); 
    }]); 

我嘗試以下根據docs但沒沒有工作。它給錯誤說未定義

$scope.$storage = $localStorage; 

$storage.userData.currentUser = data.name; 
$storage.userData.devId= data.id; 
$storage.userData.userRole = data.roles[0].name; 
$storage.userData.userId = data.user_id; 

我如何保存所有數據,如上$localStorage「$存儲」?

+0

$ storage是一個Angular服務,不是範圍變量。你能顯示控制器代碼嗎? – AranS

+0

你在哪裏填充$ storage?代碼中不清楚。 – AranS

回答

2

你可以嘗試像

var newData = { 
    currentUser : data.name, 
    devId : data.id, 
    userRole : data.roles[0].name, 
    userId : data.user_id 
}; 

localStorage.setItem('data' , JSON.stringify(newData)); 

可以解析 //對於本地​​存儲的每個項目...

for(item in localStorage) { 

     // Parse the JSON string and add to to array 
     var newItem = JSON.parse(localStorage[item]); 
     $scope.data.push(newItem); 

    } 

其關鍵

localStorage.getItem('data'); 
+0

我嘗試了一些類似於這個'localStorage.setItem('data',JSON.stringify(newData));'它說'$ localStorage.setItem()'不是一個函數 – Satyadev

+0

因爲** $ localStorage **是不是在angularjs上下文中,你試過'localStorage.setItem('data',JSON.stringify(newData)'只是我認爲它應該工作 –

0

這裏索取資料是我的代碼,試試這個:

localStorage.setItem('user', JSON.stringify({ 
 
    name: "xyz", 
 
    age: 25, 
 
    comp: "abc" 
 
})); 
 
user = JSON.parse(localStorage.getItem('user')); 
 
console.log(localStorage)

+0

它說'$ localStorage.setItem()'不是一個函數 – Satyadev

0

loginController,注入$window代替$localStorage和使用$window.localStorage.getItem(...)甚至$window.localStorage["storage_name"]
要存儲/設置數據localStorage,你可以做$window.localStorage['storage_name'] = angular.toJson(object_to_store);