25

我正在尝试实现一个非常标准的任务:发生异常时,重定向到我的/error页面。

在简化形式中,代码如下所示:

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

然而,AngularJS 抱怨: 发现循环依赖:$location <- $exceptionHandler <- $rootScope

这看起来像是一个基本限制,不允许$location在处理异常时使用。

但是我们还能怎么做呢?

4

1 回答 1

46

要解决此问题,您需要$injector手动调用以在运行时解决依赖关系:

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

    var $location;

    return function(exception, cause) {
        $location = $location || $injector.get('$location');
        $location.path("/error");
    };
}]);
于 2013-10-24T08:14:56.987 回答