gpt4 book ai didi

angularjs - .config Angular 中的 $state.go

转载 作者:行者123 更新时间:2023-12-02 04:18:34 27 4
gpt4 key购买 nike

使用以下内容在我的应用程序中捕获 401

.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function($q) {
return {
'responseError': function(rejection){
var defer = $q.defer();
if(rejection.status == 401){
$state.go('login', {}, {reload: true, inherit: false});
}
defer.reject(rejection);
return defer.promise;
}
};
});
}]);

我知道 $state.go 将无法工作,因为它无法注入(inject)。在这种状态下如何调出登录页面。

最佳答案

正如@Martin所写,您可以在注入(inject)$q时注入(inject)$state,但正如您所指出的,您有一个循环依赖项,因为$state依赖于$http(以获取 View ),但现在$http配置也依赖于 $state。

要打破这个循环,您可以使用 $injector 服务,并在完成所有依赖项检查后手动注入(inject) $state:

.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function($q, $injector) { // inject $injector service
return {
'responseError': function(rejection){

var $state = $injector.get('$state'); // manually inject $state service using $injector

var defer = $q.defer();
if(rejection.status == 401){
$state.go('login', {}, {reload: true, inherit: false});
}
defer.reject(rejection);
return defer.promise;
}
};
});
}]);

关于angularjs - .config Angular 中的 $state.go,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023956/

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