service.setState = function (sessionObj, user) {
$localStorage.sessions = {
sessionObj: sessionObj,
user: user
};
}
service.getState = function (user) {
return $localStorage.sessions;
}
我正在使用它,但它只保存当前状态。当我从另一个id登录时,它返回相同的本地存储状态数据。我想要的是不同用户的不同保存状态数据。
答案 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);