2014-01-14 1 views
1

나는 $ routeProvider를 통해 설정 라우팅, 첫 페이지로드AngularJS와 - 반복 캐시 된 모든 부분 지문이

$routeProvider.when('/page/:id', 
{templateUrl: 'partials/public/view/page.html', controller: XYZ}); 

같은 것을 가지고, 나는 캐시 부분 지문을 반복하고 그들을 제거하고 싶습니다. 처음에는 다음과 같이 시도했습니다.

$templateCache.removeAll() 
본문 요소 전체에 선언 된 상위 컨트롤러 (페이지로드라고도 함)가 호출 될 때 호출됩니다. 어느 것이 작동하는 것 같다,하지만 일부 타사 플러그인 (지시문) 나는 내가 (키) $ templateCache.remove를 사용하여 한 번에 한 부분 캐시를 제거 할 수 있습니다 알고 오류

Error: Failed to load template: template/tabs/tab.html 

을 던져하지만 난 아이디어를 좋아하지 않는다 일부 사용자 정의 지우기 기능에서 모든 부분 키를 하드 코딩합니다. 대신 캐시 된 부분을 모두 가져오고 키가 일부 문자열로 시작되면 제거하십시오. 내 질문은, 거기에 모든 캐시 된 부분을 반복하는 방법은 무엇입니까?

+1

왜 서식 파일 캐시에서 아무 것도 제거 하시겠습니까? 유스 케이스를 이해하지 못합니다. –

+0

앱이 이미 테스트 모드의 일종으로 서버에 배포되어 있고 변경 사항을 푸시하고 있기 때문에 페이지가로드되면 사용자는 최신 정보를 갖게됩니다. 나는 그것이 안정화되었을 때 그것에 대해별로 신경 쓰지 않을 것이다. 그러나 지금은 잘못된 오류를 피할 수 있어야한다. – ladar

+1

다른 파일을 요청 하시겠습니까? 이와 같은 캐시에서 항목을 삭제하면 문제가 발생합니다. –

답변

1

$ templateCache를 반복하는 쉬운 방법이 없다고 생각합니다. 참고로 Angular의 UI 부트 스트랩을 사용할 때 오류가 발생했습니다. 이 오류를 해결하는 간단한 방법은 모든 항목을 제거하는 대신 경로를 변경할 때 새 캐시 항목을 제거하는 것입니다.

... 

app.run(function($rootScope, $templateCache) { 
    $rootScope.$on('$routeChangeStart', function(event, next, current) { 
     if (typeof(current) !== 'undefined'){ 
      $templateCache.remove(current.templateUrl); 
     } 
    }); 
});