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

标签 javascript angularjs

我想保存$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 代码:

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尝试了以下操作但没有用。它给出的错误是“$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;

如何将所有数据保存到上面的 $localStorage 中?

最佳答案

你可以尝试类似的事情

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

    }

通过key获取数据

localStorage.getItem( 'data' );

关于javascript - 如何将值作为对象存储在 $localStorage 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37524944/

相关文章:

javascript - 在 Controller 中调用 AngularJS 服务函数时出错?

javascript - 悬停个人资料图片后带箭头的工具提示框

javascript - 是否可以从 Javascript 返回 CSS 媒体查询声明?

javascript - 石头、剪刀、布游戏返回错误结果

javascript - 在特定时间段内暂停javascript线程

javascript - 对 AngularJS 依赖注入(inject)不一致感到困惑

javascript - 迭代对象数组的 json 对象,将一个键的值信任为 Angular 中的 HTML

angularjs - 等待所有 promise 解决和/或拒绝?

javascript - 从 AngularJS 中自执行的 Promise 返回一个值

angularjs - 检查 json 字典是否有空字符串作为值