【发布时间】:2014-02-01 02:36:27
【问题描述】:
我希望能够设置一个 AngularJS http 拦截器,它将 $rootScope.loading 设置为 true 或 false,具体取决于当前是否正在进行 AJAX 请求。
到目前为止,我已将以下内容放在一起:
angular.module('myApp')
.config(function ($httpProvider) {
$httpProvider.responseInterceptors.push('loadingInterceptor');
var loadingFunction = function (data, headersGetter) {
$rootScope.loading = true
return data;
};
$httpProvider.defaults.transformRequest.push(loadingFunction);
})
.factory('loadingInterceptor', function ($q, $window, $rootScope) {
return function (promise) {
return promise.then(function (response) {
$rootScope.loading = false;
return response;
}, function (response) {
$rootScope.loading = false;
return $q.reject(response);
});
};
});
但是我无法将$rootScope 注入到配置块中,因此我无法在HTTP 请求开始时设置$rootScope.loading 变量。
我在这里遗漏了什么吗?我该怎么做?
【问题讨论】:
标签: angularjs