gpt4 book ai didi

$http 的 AngularJS 循环依赖问题

转载 作者:行者123 更新时间:2023-12-04 18:06:49 24 4
gpt4 key购买 nike

我遇到了循环依赖的问题。我建了一个$http处理所有 $http 的拦截器错误并使用模态(Angular UI-Bootstrap)提醒用户。

依赖链如下所示:
$http <- $modal <- ErrorHandlerService <- HTTPErrorInterceptorService <- $http
我得到的错误是:
Uncaught Error: [$injector:cdep] Circular dependency found: $http <- $modal <- ErrorHandlerService <- HTTPErrorInterceptorService <- $http <- $templateFactory <- $view <- $state
我有 read解决这类问题的诀窍是使用 $injector .我试过使用 $injector注入(inject)$modal , 我试过使用 $injector注入(inject)ErrorHandlerService但我仍然收到 Circular dependency error .

有人知道如何解决这个问题吗?

谢谢!

最佳答案

trick 的重点在 mentioned question也就是说,您将依赖关系解析为 $modal在拦截器运行时,而不是在工厂中。

这将起作用

angular.module('app')
.factory('httpAuthInterceptor', function($q, $injector) {
let $modal;
return {
responseError: (rejection) => {
if (rejection.status === 401) {
$modal = $modal || $injector.get('$modal');
$modal.open({
template: 'not logged in'
});
}
return $q.reject(rejection);
}
};
})
;

这将不起作用
angular.module('app')
.factory('httpAuthInterceptor', function($q, $injector) {
let $modal = $injector.get('$modal');
return {
responseError: (rejection) => {
...
}
};
})
;

关于$http 的 AngularJS 循环依赖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com