2014-06-20 2 views
0

내 API 호출은 $ cacheFactory ({cache: true})가 제공하는 기본 캐시에 자동으로 캐시됩니다. DB에 다른 레코드를 추가하면 캐시를 삭제하고 다시 요청하는 대신 캐시 된 정보에 관련 정보 (포스트 API 호출에서 레코드를 추가하기 위해 반환 됨)를 추가 할 수 있기를 원합니다. 자료.

var $httpDefaultCache = $cacheFactory.get('$http'); 
    var data = $httpDefaultCache.get(key) 

키는 내 API 요청의 경로입니다. 데이터는 단지 배열입니다. 요소 1은 배열을 포함하는 해시 인 내 저장된 데이터입니다. 나는 그저 새로운 기록을 추가 할 계획이었습니다. 그러나 그것을 검색 할 때 ($httpDefaultCache.get(key)[1]) 해시를 얻지 못합니다. 나는 문자열을 얻는다. 그냥 문자열을 가져 와서 해시로 변환하거나 단순히 문자열에 추가 할 수 있지만 캐시에서 데이터를 검색하는 핵심 구성 요소가 누락되었다고 생각합니다. 생각?

답변

1

누구나 비슷한 문제가 발생했을 때 어떻게 대응했는지에 대한 답.

$ http를 사용하여 캐시가 true로 설정된 API에 요청을하는 경우를 가정 해 보겠습니다.

컨트롤러 내에서이 요청의 반환 값을 설정하십시오. $ scope.politicians을 사용합니다.

기본 캐시를 사용 했으므로 $cacheFactory.get('$http')(cachedUrl)으로 검색 할 수 있습니다.

는 처음이 완료되면 해당 범위에 캐시를 다시 설정 한 후 API 호출의 반환 값으로 설정 한 $ 범위 값에 내가 원하는 변경합니다 $cacheFactory.get('$http').remove(urlOfGetRequest)

를 수행하여 캐시를 제거합니다.

$scope.politicians[new-key] = new-value; 

캐시를 다시 설정하지만 스코프를 값으로 사용하십시오.

$cacheFactory.get('$http').put(urlOfGetRequest, $scope.politicians); 

기본값이 아닌 캐시를 사용하면이 프로세스가 훨씬 쉽게 처리됩니다.

나는 직접적인 방법이 있어야한다고 맹세한다. 그러나 나는 그것을 발견 할 수 없었다.

+0

감사합니다. 그것은 나를 위해 일합니다 .. 다른 방법 있어요? –