2016-12-21 19 views
0
service.setState = function (sessionObj, user) { 
    $localStorage.sessions = { 
     sessionObj: sessionObj, 
     user: user 
    }; 

} 

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

我正在使用這個,但它只保存當前狀態。當我從另一個ID登錄時,它會返回相同的本地存儲狀態數據。我想要的是針對不同用戶的不同保存狀態數據。如何在角度js 1中爲多個用戶設置本地存儲中的數據?

+0

使用sessionStorage改爲localStorage – Tuhin

+0

@Tuhin我想保留數據存儲。情景是,如果我登錄用戶1,我得到了用戶1的數據,如果我從用戶2登錄,我得到了用戶2的數據。 –

回答

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, 
..... 
} 

使用的toJSON和fromJson爲localStorage的和sessionStorage的只與字符串工作。

+0

非常感謝你,根據我的要求完全爲我工作。 –

+0

歡迎。乾杯! – Tuhin

0

您不應將會話存儲在本地存儲中。改爲使用會話存儲。

如果您需要以某種方式工作,請將其定義爲一組對象。

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

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

你需要爲每個用戶

0

您無法將JSON數據保存到本地存儲變量,您必須在保存到localstorage之前將JSON首字符串化。

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

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

並且在回顧數據時解析localstorage值。

var Response = JSON.parse($localStorage.sessions); 
相關問題