2016-10-03 128 views
0

我通过angularjs工厂访问存储在本地存储的数据。在页面加载时,工厂从本地存储装载并访问数据并将它们存储在变量中。我可以调用该工厂并获取变量中的值。刷新没有页面的Angular JS工厂重新加载

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

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,userFactory.userName功能后变为localStorage的值返回旧值,而不是新的。请帮助

+0

只要您的本地存储值被更改,并且以后每当您尝试通过工厂/服务访问该值时,它都会采用新更新的值。如果它不是theb我不知道我完全理解你的观点。 –

+0

是的,你可以存储你的本地存储值,只要它的变化,并将其设置为工厂,然后尝试访问 –

+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