【问题标题】:How to update the local storage value?如何更新本地存储值?
【发布时间】:2018-02-18 05:13:45
【问题描述】:

我已经搜索了很多东西,但没有一个对我有帮助。我想要实现的是,每当我将一个项目设置为我的本地存储时,我也可以更新那个特定的项目。现在,如何更改/更新本地存储的值?我正在尝试,但它不起作用。

注意:我正在构建一个离子应用程序。

这是我的代码:

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

我做错了吗?请帮忙。

【问题讨论】:

  • 看看你的return语句中setUser和getUser的区别。调用 setUser() 什么都不做。
  • 你不应该更新名字叫Auth.getUser(0).name = ...而不是Auth.setUser(...吗?
  • 我该怎么办?
  • 0 传递给setUser() 是没有意义的。如所写,您说“将函数传递给0”,然后在函数中,您说“set _user 到传入的内容(0)”,然后“字符串化_user”(其值为0)。最重要的是,setUser 不会返回任何内容,因此setUser(0).name 无论如何也不会工作。
  • 请给我一个更新数据的代码

标签: javascript html angularjs ionic-framework local-storage


【解决方案1】:

我已经解决了我的问题!感谢您的回复:

我刚刚在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%

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2014-03-22
    • 2020-10-27
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 2021-04-06
    • 2015-06-14
    相关资源
    最近更新 更多