2016-10-03 118 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