2013-10-24 2 views
22

매우 표준 작업을 구현하려고합니다. 예외가 발생하면 내 /error 페이지로 리디렉션합니다. 단순화 된 형태에서

코드는 다음과 같습니다 그러나

app.factory('$exceptionHandler', ['$location', function($location) { 
    return function(exception, cause) { 
     $location.path("/error"); 
    }; 
}]); 

, AngularJS와는 불평 : 발견 순환 종속성 : $ 위치 <이 - $이 exceptionHandler <이 - $이 rootScope

이의 모습 예외를 처리 할 때 $location의 사용을 허용하지 않는 근본적인 제한 사항입니다.

하지만 어떻게해야할까요?

+0

(http://code.angularjs.org/1.2.0-rc .3/docs/api/ng. $ location)'$ location'의 유일한 의존성은'$ browser','$ sniffer','$ rootElement'입니다. 왜이 코드가이 오류를 던질 지 모르겠다. 죄송합니다.별로 도움이되지 않습니다. 문서에없는 숨겨진 의존성이 있어야합니다 ... – tennisgent

답변

44

런타임에 의존성을 해결하기 위해 수동으로 $injector를 호출해야이 문제를 해결하려면 다음 [문서]에 따르면

app.factory('$exceptionHandler', ['$injector', function($injector) { 

    var $location; 

    return function(exception, cause) { 
     $location = $location || $injector.get('$location'); 
     $location.path("/error"); 
    }; 
}]); 
+0

정말 고마워요. –