javascript - 刷新 Angular JS Factory,无需重新加载页面

标签 javascript angularjs factory angularjs-factory

我正在通过 angularjs 中的工厂访问存储在本地存储中的数据。在页面加载时,工厂从本地存储加载和访问数据并将它们存储在变量中。我可以调用该工厂并获取变量中的值。

但是,每当我在更改本地存储值后调用工厂时,工厂都会返回旧值而不是新值。有没有办法刷新工厂,以便它再次获取本地存储值而不刷新整个页面?

Javascript代码..

headerApp.factory('userFactory', ['$rootScope', function($rootScope){
    var dataFactory = {};
    dataFactory.user = localStorage.getItem("valueA");
    dataFactory.userName = localStorage.getItem("valueB");
    dataFactory.userAccessToken = localStorage.getItem("valueC");
    return dataFactory;
}]);

在调用 userFactory.user 时,函数更改 localstorage 值后的 userFactory.userName 返回旧值而不是新值。请帮忙

最佳答案

如何将您从本地存储提取信息的代码移动到工厂中的函数中,然后每当您更新任何本地存储时,都调用该函数来更新 dataFactory也是吗?

headerApp.factory('userFactory', ['$rootScope', function($rootScope){
  var dataFactory = {};

  this.updateUser();
  this.updateUserName();
  this.updateAccessToken();

  updateUser () {
    dataFactory.user = localStorage.getItem("valueA");
  }

  updateUserName () {
    dataFactory.userName = localStorage.getItem("valueB");
  }

  updateUserAccessToken () {
    dataFactory.userAccessToken = localStorage.getItem("valueC");
  }

  return dataFactory;
}]);

然后,在任何时候,假设本地存储端的用户名发生更改,您都可以调用 this.userFactory.updateUserName(); 来更新 dataFactory.userName.

关于javascript - 刷新 Angular JS Factory,无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39825211/

相关文章:

javascript - Angularjs 1.4 拦截器不工作

javascript - 如何从 URL 中删除最后两部分?

javascript - 如何在javascript中对数组的数组求和

javascript - 删除以特定字符串开头的所有类

javascript - 单击新选项卡中的打开链接时,ng-click 不起作用

javascript - gulp-ng-annoate 出错,由于解析错误而无法处理源代码

python - 玩转对象创建

javascript - Phantom js 不支持箭头函数 (=>)

javascript - 在不使用 for 循环的情况下生成具有随机数据的数组

oop - 外挂 : Using factory pattern in combination with strategy pattern