2017-05-04 52 views
0

我們必須將對象連接成HTML5 localStorage中的一個對象數組。如何在angular JS中的localStorage中連接對象

我們首先檢查是否已經有一些數據。如果不存在,我們只添加該項目,或者將另一個項目追加到現有項目以將其轉換爲數組。

if(type === 'server'){ 
    var old = $window.localStorage.getItem('selectedServers'); 
    if(old === null) 
     localStorage.setItem('selectedServers', JSON.stringify(item)); 
    else 
     localStorage.setItem('selectedServers', JSON.stringify(old.concat(item))); 
} 

但是這段代碼不起作用。即使JSON.stringify(old+data)也會帶來意想不到的結果。

結果出乎意料的\ s。 item這裏是要添加或附加的對象。

如何在Angular JS中實現相同?

+0

什麼是'item'? – dfsq

+0

@dfsq要添加的新對象。 – StrugglingCoder

+0

爲什麼要將對象存儲在一個案例中並將數組存儲在另一個案例中。總是存儲數組。 – dfsq

回答

1

你應該使用concat()前解析,因爲你是堅持不具備concat()方法

if (type === 'server') { 
    var old = $window.localStorage.getItem('selectedServers'); 
    if (old === null) { 
     var arr = [item]; //Create ARRAY 
     $window.localStorage.setItem('selectedServers', JSON.stringify(arr)); 
    } else { 
     old = JSON.parse(old); 
     $window.localStorage.setItem('selectedServers', JSON.stringify(old.concat(item))); 
    } 
} 
+0

感謝您的糾正。但我仍然看到舊的項目。數組長度應該更新爲2之後的新項目不存在。當我做.push而不是.concat時,我得到了字符串數組中的值2。 – StrugglingCoder

+0

儘管在控制檯old.concat(item)返回修改的附加值,由於某種原因它不反映在localStorage中。它只持有第一個值。 – StrugglingCoder

+0

@StrugglingCoder,這很奇怪,你如何檢查? – Satpal

0

本地存儲設備只能存儲字符串,這就是爲什麼你使用JSON.stringify字符串。方法concat()不存在於字符串中,所以我猜你正在存儲一個「字符串」數組。 如果是這樣的話,你必須解析字符串才能得到數組,然後連接新的數組o然後再將結果數組串起來,然後將結果數組串起來。

相關問題