Подтвердить что ты не робот

$ location from $exceptionHandler - конфликт зависимости

Я пытаюсь выполнить очень стандартную задачу: когда возникает исключение, перенаправляйтесь на мою страницу /error.

В упрощенной форме код выглядит следующим образом:

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

Однако, AngularJS жалуется: Найден круговой зависимости: $location < - $exceptionHandler < - $rootScope

Это выглядит как фундаментальное ограничение, а не разрешать использование $location при обработке исключений.

Но как еще мы можем это сделать?

4b9b3361

Ответ 1

Чтобы обойти это, вам нужно вызвать $injector вручную, чтобы разрешить зависимость во время выполнения:

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

    var $location;

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