2017-09-09 70 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; 
    } 
} 


}]) 

app.js

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. 

難道我做錯了嗎?請幫忙。

+0

看看你return語句在SETUSER和的getUser的差異。調用setUser()什麼都不做。 –

+0

不應該更新名稱,調用'Auth.getUser(0).name = ...'而不是'Auth.setUser(...'? – Odepax

+0

我應該怎麼做? – 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); 
    } 

當我更新的具體數據

Auth.updateUser({name: "A new Name"}); 
alert(Auth.getUser(0).name); 
// Works 100% 
相關問題