【问题标题】:$location from $exceptionHandler - dependency conflict$location 来自 $exceptionHandler - 依赖冲突
【发布时间】:2013-11-02 11:49:50
【问题描述】:

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

代码的简化形式如下:

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

然而,AngularJS 抱怨: 找到循环依赖:$location

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

但是那我们还能怎么做呢?

【问题讨论】:

  • 根据docs$location 的唯一依赖项是$browser$sniffer$rootElement。我不明白为什么这段代码会抛出这个错误......对不起,我帮不上忙。必须有一些文档中没有的隐藏依赖项......

标签: angularjs dependencies exceptionhandler


【解决方案1】:

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

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

    var $location;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2019-12-24
    • 2021-12-14
    • 2022-01-24
    • 2021-12-03
    • 2013-06-24
    相关资源
    最近更新 更多