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

时间:2016-10-03 05:44:12

标签: javascript angularjs factory angularjs-factory

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

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

Javascript Code ..

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,userFactory.userName localstorage值返回旧值而不是新值。请帮忙

1 个答案:

答案 0 :(得分:1)

如何将代码从本地存储中移动到工厂中的函数中,然后在更新任何本地存储时,您调用该函数来更新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