2017-04-02 18 views
0

を使用していますが、私はsimularスレッドを見ましたが、成功しませんでした。私がしようとしているのは、更新機能を使って自分のlocalstorageを更新することです。JSON.parseの位置0のJSONで予期しないトークンoが角度

変数を作成するためのコードを呼び出すために:

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(ラインを使用しており、応答はまさにそれが想定されているものと思われます。私はJSON.parse(JSON.stringifyを使って試してみました。上記のエラーか、ページをリロードしようとすると別のエラーが表示されるようです。 Apperently私は、ステートメントを実行することはできません、または私はページを再読み込みするsimularエラーを返すようにデータを破損して終了します。

変数プロファイルのデータは疑問である場合には:

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

とデータを詳しく見て撮影するとき:

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

を他のオブジェクトは、それらの中にいない奇妙なデフォルト設定と同じに見えます。私はすでに$$ハッシュキーを処理していましたが、それは問題でした。

呼び出しを正しく実行する方法についての助けがあれば、非常に感謝しており、情報が不十分であれば教えてください。

+1

'' localStorage.getItem( "プロファイル")の値とは何ですか? –

+0

ng-storageを使用することもお勧めしますか?ストレージを扱う素晴らしい方法。 –

+0

Hah ...ナル値が... Uuh、それを修正するために何をすべきかわからない。 this.profileを定義した後、localStorage.setItem( "profile"、this.profile)というルールを追加してください。私はng-storageを調べます。チェックアウトの価値があるかもしれません。 –

答えて

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

関連する問題