来自$ exceptionHandler的$ location - 依赖冲突

时间:2013-10-24 00:10:07

标签: angularjs dependencies exceptionhandler

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

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

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

然而,AngularJS抱怨说: 找到循环依赖项:$ location< - $ exceptionHandler< - $ rootScope

这似乎是一个基本限制,不允许在处理异常时使用$location

但我们还能怎么做呢?

1 个答案:

答案 0 :(得分:45)

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

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

    var $location;

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