2017-04-02 71 views
0

我看過相似的線程,但沒有成功。我想要做的是通過更新功能更新我的本地存儲。功能如下所示:在JSON位置0的意外標記o在JSON.parse中使用角度

使變量的代碼來調用:

var localProfile = JSON.parse(localStorage.getItem("profile")); 

if(localProfile != undefined && localProfile.length>0) 
{ this.profiles = localProfile; } 

else { 
    this.profile = [ 
     { id: "1526", name: "berserk",  password: "berserk", age: "31",   gender: "male"}, 
     { id: "1358", name: "Johnathan", password: "test",  age: "17",   gender: "male"}, 
     { id: "2539", name: "Britney",  password: "test",  age: "18",   gender: "female"}, 
     { id: "1486", name: "Kevin",  password: "test",  age: "7",   gender: "male"}, 
     { id: "7777", name: "jesus",  password: "holy",  age: "unknown",  gender: "male"}, 
     { id: "6666", name: "satan",  password: "hell",  age: "unknown",  gender: "unknown"} 
    ]; 
} 

代碼更新變量:

this.updateProfile = function(profile) { 
    profile.updating = false; 
    console.log(profile); 
    localStorage.setItem("profile", profile); 
} 

正如我在標題中提到我目前使用角。我已經使用了console.log(-line,這個迴應似乎正是它應該是。我曾嘗試使用JSON.parse(JSON.stringify以及其他一些組合。在嘗試重新加載頁面時,我似乎遇到了上述錯誤或其他錯誤。 Apperently我要麼不能執行該語句,要麼導致數據損壞,因此重新加載頁面會返回一個類似的錯誤。

如果在可變輪廓的數據是有疑問:

Array [ Object, Object, Object, Object, Object, Object ] 

而且考慮在數據細看時:

age:"17" 
gender:"male" 
id:"1358" 
name:"johnathan" 
password:"test" 

其他對象的外觀相同,在它們沒有奇怪的默認值。我已經照顧了$$ hashkey只是爲了解決這個問題。

有關如何正確執行呼叫的任何幫助都非常令人滿意,如果信息不足,請告訴。

+1

什麼是'localStorage.getItem( 「個人資料」)'的價值? –

+0

也可以建議使用ng-storage嗎?偉大的方式來處理存儲。 –

+0

哈......有我的無價值......呃,不知道該怎麼辦才能解決這個問題。在我定義this.profile之後,只需添加一些規則localStorage.setItem(「profile」,this.profile)?我將研究ng存儲。可能值得一試。 –

回答

2

問題是您在保存數據時不使用JSON.stringify。所以當你從localStorage解析它時,它不是json。

添加一個工廠,在您的應用程序處理JSON.parse()JSON.stringify()

.factory('LocalStorageUtil', function() { 
    return { 
    get: get, 
    set: set, 
    remove: remove 
    } 

    function get(key) { 
    return JSON.parse(localStorage.getItem(key)); 
    } 

    function set(key, val) { 
    localStorage.setItem(key, JSON.stringify(val)); 
    } 

    function remove(key) { 
    return localStorage.removeItem(key); 
    } 
}) 

下面是一個使用這個LocalStorageUtil一個JS斌微小的示例應用程序中使用。

http://jsbin.com/fijagiy/2/edit?js,output

相關問題