2016-10-03 9 views
0

angularjs의 팩토리를 통해 로컬 저장소에 저장된 데이터에 액세스하고 있습니다. 페이지로드시로드가로드되고 로컬 스토리지에서 데이터에 액세스하여 변수에 저장합니다. 그 팩토리를 호출하고 변수의 값을 가져올 수 있습니다.페이지가없는 Refresh Angular JS Factory 다시로드

그러나 localstorage 값을 변경 한 후에 팩토리를 호출 할 때마다 팩토리는 새 값 대신 이전 값을 반환합니다. 팩토리를 새로 고침하여 전체 페이지를 새로 고치지 않고 로컬 스토리지 값을 다시 가져 오는 방법이 있습니까? 함수 후 userFactory.user, userFactory.userName를 호출에

자바 스크립트 코드 ..

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; 
}]); 

대신 새의 이전 값을 반환 로컬 스토리지 값을 변경합니다. 제발 도와주세요

+0

로컬 저장소 값이 변경되면 나중에 공장/서비스를 통해 해당 값에 액세스하려고 할 때마다 새로 업데이트 된 값을 가져 오는 것으로 가정합니다. 그게 아니라면 내가 너의 요점을 완전히 이해했는지 모르겠다. –

+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; 
}]); 

는 그리고 어느 시점에서, 당신은 dataFactory.userName을 업데이트 this.userFactory.updateUserName();를 호출 할 수 있습니다, 사용자 이름이 로컬 스토리지의 끝에서 변경되었다 말한다.