AngularJS $httpprovider.interceptors.push 不工作
AngularJS $httpprovider.interceptors.push is not working
我在 inspect.js
中有一个 angular JS 工厂方法
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular
.module("Myapp")
.factory("MyAppAuthIn", ['$window', '$q', function ($window, $q) {
var authFactory = {};
var _request = function (config) {
config.headers = config.headers || {};
var authData = $window.sessionStorage.getItem('token');
if (accessToken) {
config.headers.Authorization = 'Bearer ' + authData;
}
return config;
}
var _responseError = function (rejection) {
if (rejection.status === 401) {
console.log("Some Error Here");
}
return $q.reject(rejection);
}
authFactory.request = _request;
authFactory.responseError = _responseError;
return authFactory;
}]);
});
我在 appModule.js 文件中有这个模块。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular
.module("Myapp")
.config(function ($httpProvider) {
$httpProvider.interceptors.push('MyAppAuthIn');
});
}());
我将 JS 文件都包含到我的 ASPX 页面和 运行 中。然后我收到错误消息说
Uncaught Error: [$injector:unpr] Unknown provider: MyAppAuthInProvider <- MyAppAuthIn<- $http <- $templateFactory <- $view <- $state
但是如果我将所有内容都放在一个文件中,例如 myspector.js 就可以正常工作。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular.module("Myapp", [])
.factory("MyAppAuthIn", ['$window', '$q', function ($window, $q) {
var authFactory = {};
var _request = function (config) {
config.headers = config.headers || {};
var authData = $window.sessionStorage.getItem('token');
if (accessToken) {
config.headers.Authorization = 'Bearer ' + authData;
}
return config;
}
var _responseError = function (rejection) {
if (rejection.status === 401) {
console.log("Some Error Here");
}
return $q.reject(rejection);
}
authFactory.request = _request;
authFactory.responseError = _responseError;
return authFactory;
}])
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('MyAppAuthIn');
}]);
}());
任何人都可以帮助我理解这个问题吗?..我现在差不多 2 天来解决这个问题。请帮忙高度赞赏
找到问题了。您在 appModule.js 中对 angular.module()
的调用需要依赖项列表(即使它是空的)。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular
.module("Myapp", [])
.config(function ($httpProvider) {
$httpProvider.interceptors.push('MyAppAuthIn');
});
}());
有关工作示例,请参阅 plnkr:http://plnkr.co/edit/tpCKl1zO4sbt605VgrCF
我在 inspect.js
中有一个 angular JS 工厂方法<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular
.module("Myapp")
.factory("MyAppAuthIn", ['$window', '$q', function ($window, $q) {
var authFactory = {};
var _request = function (config) {
config.headers = config.headers || {};
var authData = $window.sessionStorage.getItem('token');
if (accessToken) {
config.headers.Authorization = 'Bearer ' + authData;
}
return config;
}
var _responseError = function (rejection) {
if (rejection.status === 401) {
console.log("Some Error Here");
}
return $q.reject(rejection);
}
authFactory.request = _request;
authFactory.responseError = _responseError;
return authFactory;
}]);
});
我在 appModule.js 文件中有这个模块。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular
.module("Myapp")
.config(function ($httpProvider) {
$httpProvider.interceptors.push('MyAppAuthIn');
});
}());
我将 JS 文件都包含到我的 ASPX 页面和 运行 中。然后我收到错误消息说
Uncaught Error: [$injector:unpr] Unknown provider: MyAppAuthInProvider <- MyAppAuthIn<- $http <- $templateFactory <- $view <- $state
但是如果我将所有内容都放在一个文件中,例如 myspector.js 就可以正常工作。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular.module("Myapp", [])
.factory("MyAppAuthIn", ['$window', '$q', function ($window, $q) {
var authFactory = {};
var _request = function (config) {
config.headers = config.headers || {};
var authData = $window.sessionStorage.getItem('token');
if (accessToken) {
config.headers.Authorization = 'Bearer ' + authData;
}
return config;
}
var _responseError = function (rejection) {
if (rejection.status === 401) {
console.log("Some Error Here");
}
return $q.reject(rejection);
}
authFactory.request = _request;
authFactory.responseError = _responseError;
return authFactory;
}])
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('MyAppAuthIn');
}]);
}());
任何人都可以帮助我理解这个问题吗?..我现在差不多 2 天来解决这个问题。请帮忙高度赞赏
找到问题了。您在 appModule.js 中对 angular.module()
的调用需要依赖项列表(即使它是空的)。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
(function () {
"use strict";
angular
.module("Myapp", [])
.config(function ($httpProvider) {
$httpProvider.interceptors.push('MyAppAuthIn');
});
}());
有关工作示例,请参阅 plnkr:http://plnkr.co/edit/tpCKl1zO4sbt605VgrCF