2017-09-09 31 views
-1

私はすでにたくさんのものを検索しましたが、どれも私を助けませんでした。私が達成したいのは、アイテムを自分のローカルストレージにセットするたびに、そのアイテムを更新することもできます。さて、どのようにローカルストレージの値を変更/更新するのですか?私は試していますが、動作しません。ローカルストレージの値を更新するにはどうすればよいですか?

注:私はイオンアプリを構築しています。

.factory('Auth', [function() { 

    if(window.localStorage['session']){ 
    var _user = JSON.parse(window.localStorage['session']); 
    } 

    var setUser = function(session){ 
    _user = session; 
    window.localStorage['session'] = JSON.stringify(_user); 
} 


return { 

    setUser: setUser, 
    isLoggedIn: function(){ 
    return _user ? true : false; 
    }, 
    getUser: function(){ 
    return _user; 
    }, 
    logout: function(){ 
    window.localStorage.removeItem("session"); 
    window.localStorage.removeItem("list_dependents"); 
    _user = null; 
    } 
} 


}]) 

は私が間違っているの

Auth.setUser({ 
    name: 'Kean', 
    sex: 'Male' 
}); 

alert(Auth.getUser(0).name); 
// works fine. 

//But when I update the name like this: 
Auth.setUser(0).name = "Allen"; 

// It does not work. 

app.js:

は、ここに私のコードですか?助けてください。

+0

ルックを更新内のこの行を追加しました。 setUser()を呼び出すと何も行われません。 –

+0

'Auth.setUser(...'? – Odepax

+0

)の代わりに 'Auth.getUser(0).name = ...'を呼び出す名前を更新しないでください。どうすればいいですか? – user8143979

答えて

0

私はすでに私の問題を解決しました!回答をありがとう:

は私だけreturn

updateUser: function(updatedUser){ 
    var the_user = this.getUser(); 
    for(var attr in the_user){ 
     if(updatedUser[attr]&& updatedUser[attr] !== the_user[attr]){ 
     the_user[attr] = updatedUser[attr]; 
     } 
    } 
    this.setUser(the_user); 
    } 

とするとき、私は特定のデータをあなたのreturn文でSETUSERとのgetUserの違いで

Auth.updateUser({name: "A new Name"}); 
alert(Auth.getUser(0).name); 
// Works 100% 
関連する問題