简体   繁体   English

如何将值存储在$ localStorage中作为对象

[英]How to store values in $localStorage as object

I want to save all the objects in $localStorage as following: 我想将所有对象保存在$localStorage ,如下所示:

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

controller Code: 控制器代码:

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);
    }]);

I tried the following according to docs but didn't work. 我根据文档尝试了以下操作,但是没有用。 Its giving error saying '$storage' of undefined 它的给出错误,表示未定义的“ $ storage”

$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;

How do I save all data in to $localStorage as above ? 如何将所有数据如上所述保存到$localStorage中?

You could try something like 您可以尝试类似

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

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

Can Parse // For each item in local storage... 可以解析//对于本地​​存储中的每个项目...

 for( item in localStorage ) {

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

    }

Get data by its key 通过键获取数据

localStorage.getItem( 'data' );

here is my code, try this one: 这是我的代码,请尝试以下代码:

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

In loginController , inject $window instead of $localStorage and use $window.localStorage.getItem(...) or even $window.localStorage["storage_name"] . loginController ,注入$window而不是$localStorage并使用$window.localStorage.getItem(...)甚至$window.localStorage["storage_name"]
To store/set data in localStorage , you could do $window.localStorage['storage_name'] = angular.toJson( object_to_store) ; 要将数据存储/设置在localStorage ,可以执行$window.localStorage['storage_name'] = angular.toJson( object_to_store) ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM