2011-08-29 54 views
4

我試圖在對象內的數組內部本地存儲對象。localStorage - 將對象附加到對象數組

如果我嘗試在我的控制檯下面它完美的作品:

theObject = {} 
theObject.theArray = [] 
arrayObj = {"One":"111"} 
theObject.theArray.push(arrayObj) 

但是,如果我做我認爲是等價的,除非存儲在localStorage的結果失敗:

localStorage.localObj = {} 
localStorage.localObj.localArray = [] 
stringArrayObj = JSON.stringify(arrayObj) 
localStorage.localObj.localArray.push(stringArrayObj) 

我得到以下錯誤...

localStorage.localObj.localArray.push(stringArrayObj) 
TypeError 
arguments: Array[2] 
message: "—" 
stack: "—" 
type: "non_object_property_call" 
__proto__: Error 

任何想法如何我可以得到這個工作?其中,關鍵是字符串和值字符串太

乾杯

回答

10

您只能在localStorage中存儲字符串。您需要對對象進行JSON編碼,然後將結果字符串存儲在localStorage中。當您的應用程序啓動時,JSON解碼您保存在localStorage中的值。

localObj = {} 
localObj.localArray = [] 
localObj.localArray.push(arrayObj) 

localStorage.localObj = JSON.stringify(localObj); 
... 
localObj = JSON.parse(localStorage.localObj); 
+0

謝謝 - 這正是我所需要的。 – user714852

2

的localStorage只能存儲鍵 - 值對。 您可以將整個對象層次序列化爲JSON並將其保存爲localStorage項目。根據V8資源(我假設你使用谷歌瀏覽器,但希望這對其他JS引擎來說沒什麼不同)帶有消息'non_object_property_call'的TypeError發生比調用undefined或null值的方法。