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

vit*_*y-t 24 dependencies angularjs exceptionhandler

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

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

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

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

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

但是我们还能怎么做呢?

tas*_*ATT 46

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

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

    var $location;

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