如何在角度js 1中为多个用户设置本地存储中的数据?

时间:2016-12-21 08:54:51

标签: angularjs local-storage

service.setState = function (sessionObj, user) {
    $localStorage.sessions = {
        sessionObj: sessionObj,
        user: user
    };

}

service.getState = function (user) {
    return $localStorage.sessions;
}

我正在使用它,但它只保存当前状态。当我从另一个id登录时,它返回相同的本地存储状态数据。我想要的是不同用户的不同保存状态数据。

3 个答案:

答案 0 :(得分:1)

   service.addState = function(sessionObj, user) {
       if($localStorage.sessions === undefined || $localStorage.sessions=="null"){
           $localStorage.sessions = angular.toJson({});
       }
       var sessions = angular.fromJson($localStorage.sessions);
       sessions[user] = sessionObj;
       $localStorage.sessions = angular.toJson(sessions);
    }

    service.getState = function(user) {
        var sessions = angular.fromJson($localStorage.sessions);
        return sessions[user];
    }

此处您的localStorage结构将是:

sessions :{
 user1:sessionObj1,
 user2:sessionObj2,
.....
}

用于json和fromJson作为localStorage,sessionStorage仅用于String。

答案 1 :(得分:0)

您不应将会话存储在本地存储中。改为使用会话存储。

如果您需要以某种方式工作,请将其定义为对象数组。

var users= [{
                sessionObj: sessionObj1,
                user: user1
            },
          {
                sessionObj: sessionObj2,
                user: user2
            }];

localStorage.setItem("userSessions", JSON.stringify(users));

您需要为每个用户推送会话

答案 2 :(得分:0)

您无法将JSON数据保存到本地存储变量,您必须在保存到localstorage之前对JSON frist进行字符串化。

var Data = {
    sessionObj: sessionObj,
    user: user
};

$localStorage.sessions = JSON.stringify(Data);

并在重新获取数据时,解析localstorage值。

var Response = JSON.parse($localStorage.sessions);