2016-05-30 81 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);