$location из $exceptionHandler — конфликт зависимостей

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

В упрощенном виде код выглядит так:

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

Однако AngularJS жалуется: Обнаружена циклическая зависимость: $location ‹- $exceptionHandler ‹- $rootScope

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

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


person vitaly-t    schedule 24.10.2013    source источник
comment
Согласно документам, единственный зависимости для $location: $browser, $sniffer и $rootElement. Я не понимаю, почему этот код выдает эту ошибку... извините, я не сильно помогу. Должна быть какая-то скрытая зависимость, которой нет в документах...   -  person tennisgent    schedule 24.10.2013


Ответы (1)


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

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

    var $location;

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