2017-09-09 1 views
-1

J'ai déjà fouillé beaucoup de choses mais aucun d'entre eux ne m'a aidé. Ce que je veux réaliser, c'est que chaque fois que je mets un objet à mon localstorage, je peux aussi mettre à jour cet élément spécifique. Maintenant, comment changer/mettre à jour la valeur du stockage local? Im essayant mais cela ne fonctionne pas.Comment mettre à jour la valeur de stockage local?

REMARQUE: Je construis une application ionique.

Voici mon code:

.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. 

Est-ce que je fais mal? S'il vous plaît aider.

+0

Regardez la différence de setUser et getUser dans votre déclaration de retour. L'appel de setUser() ne fait rien. –

+0

Ne devriez-vous pas mettre à jour le nom appelant 'Auth.getUser (0) .name = ...' au lieu de 'Auth.setUser (...'? – Odepax

+0

Que dois-je faire? – user8143979

Répondre

0

J'ai déjà résolu mon problème! Merci pour les réponses:

Je viens d'ajouter cette ligne dans 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); 
    } 

Et quand je mets à jour les données spécifiques

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