2016-09-09 2 views
2

내가 처음으로 내 모달 HTML 페이지를로드하고 해당 데이터를 얻고 캐싱을 사용할 때 오류가 발생,하지만 난 오류가 점점 오전 두 번째 시간을로드하려고하면,AngularJS와

아래 내 JS 코드를 찾아주세요,

getData: function(Key) { 
    return $http.get(baseURL + '/getDetails/' + Key, { 
     headers: header, 
     cache: true 
    }); 
} 

이 내가 각도 JS에서 $ 캐시를 사용하고 처음으로, 제가이 오류를 얻고있다 이유를 알려 주시기 바랍니다 내 MyRestApi.js 나는 아래의 코드를 사용하고 있습니다에서

var cache = $cacheFactory('cacheId'); 
var cacheData = cache.get('xml'); 

if (!cacheData) { 
    MyRestApi.getData($scope.data1).then(function(response) { 
     cacheData = response; 
     cache.put('xml', cacheData); 
    }); 
} else { 
    var processdata = cache.get('xml'); 
} 

, . 두 번째 동일한 모달 페이지를로드하고이 오류가 발생합니다. angular.js 받기 : 13568 오류 : [$ cacheFactory : iid] CacheId 'cacheId'가 이미 사용 중입니다!

+0

'cache : true'를 설정하면 get 요청이 자동으로 캐시됩니다. 캐시를 수동으로 조작하려면 방금 생성 한 $ cacheFactory 객체에 'cache' 속성을 설정해야합니다. 하지만 정말로 원하니? – Amygdaloideum

+0

$ cacheFactory를 사용하지 않고 $ scope.cache와 똑같이 얻을 수 있습니까? 캐시하면 MyRestApi에서 JS 코드까지 캐시 값을 자동으로 캐시 할 수 있습니다. 데이터를 한 번만 설정하고 데이터가 매우 크고로드하는 데 오랜 시간이 걸리는 두 번째 시간에 데이터를 가져와야합니다. $ scope.cache.put ('xml', cacheData) $ scope.cache.get ('xml')을 사용하여 얻으십시오. – user3428736

답변

0

이 충분하다 :

getData: function(Key) { 
    return $http.get(baseURL + '/getDetails/' + Key, { 
     headers: header, 
     cache: true 
    }); 
} 

당신이 데이터를 얻을 것이다 처음, 그것은 HTTP 캐시에 저장됩니다. 두 번째로 동일한 요청을하면 캐시 된 값을 다시 가져 오는 대신 전달합니다. dev 도구의 네트워크 탭에서 확인하십시오.

단일 페이지 응용 프로그램이있는 경우에만 해당하지만 페이지를 다시로드하면 (f5) 페이지가 캐시를 다시 설정합니다.