gpt4 book ai didi

angularjs - $injector.get 不是函数

转载 作者:行者123 更新时间:2023-12-01 13:37:50 28 4
gpt4 key购买 nike

我正在尝试制作 autenticate-interseptor。核心思想很简单:当服务器请求失败时,我们必须通过 http-auth 登录用户。代码如下所示:

(function() {
'use strict';

angular
.module('app.authentication')
.factory('AuthenticationInterceptor', ['$q', '$injector', '$location', 'Session',

function AuthenticationInterceptor($location, $q, $injector, Session) {
return {
request: function(config) {
var currentUser = Session.currentUser();

if (!currentUser || !currentUser.id) {
if ($location.path() !== '/login') { $location.path('/login'); }
}

return config;
},
responseError: function(response) {
if (response.status === 401 || response.status === 403) {
var $http = $injector.get('$http');

Session.destroy();

$location.path('/login');
}
return $q.reject(response);
}
};
}

]);

})();

我在这里需要这个 var $http = $injector.get('$http'); 因为循环注入(inject)错误。但是当我使用该模块时,出现错误 TypeError: $injector.get is not a function

那么,我怎样才能在这里注入(inject) $http 呢?

最佳答案

您的注入(inject)顺序与数组中的字符串不匹配。

angular
.module('app.authentication')
.factory('AuthenticationInterceptor', ['$q', '$injector', '$location', 'Session',
function AuthenticationInterceptor($location, $q, $injector, Session) {

您告诉 Angular 将 $location 服务作为第三个参数注入(inject)到 AuthenticationInterceptor 服务中,但是您正在使用第三个参数,就好像它是 $injector。将您的代码更改为以下内容:

angular
.module('app.authentication')
.factory('AuthenticationInterceptor', ['$location', '$q', '$injector', 'Session',
function AuthenticationInterceptor($location, $q, $injector, Session) {

关于angularjs - $injector.get 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42541397/

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