问题描述
我发现一个装载微调针对HTTP的例子/资源调用这里SO:
I've found an example of a loading spinner for http/resource calls here on SO:
- (Plunker变量:<一href=\"http://plnkr.co/edit/32Mh9UOS3Z4vnOtrH9aR?p=$p$pview\">http://plnkr.co/edit/32Mh9UOS3Z4vnOtrH9aR?p=$p$pview)
- Set rootScope variable on httpIntercept (Plunker: http://plnkr.co/edit/32Mh9UOS3Z4vnOtrH9aR?p=preview)
正如你所看到的实施工作(使用AngularJS 1.0.5)。但是,如果您更改源AngularJS 1.1.5。该示例不工作了。
As you can see the implementation works (using AngularJS 1.0.5). However if you change the sources to AngularJS 1.1.5. The example does not work anymore.
我了解到, $ httpProvider.responseInterceptors
是1.1.5 pcated德$ P $。
相反,应该使用 $ httpProvider.interceptors
I learned that $httpProvider.responseInterceptors
is deprecated in 1.1.5.Instead one should use $httpProvider.interceptors
不幸的是刚刚更换的Plunker上面的字符串并没有解决问题。有没有人做过使用HttpInterceptor这样的加载微调在AngularJS 1.1.5?
Unfortunately just replacing the above string in the Plunker did not solve the problem. Has anyone ever done such a loading spinner using HttpInterceptor in AngularJS 1.1.5?
感谢您的帮助!
迈克尔
推荐答案
感谢史蒂夫的暗示我能够实施装载机:
Thanks to Steve's hint I was able to implement the loader:
拦截器:
.factory('httpInterceptor', function ($q, $rootScope, $log) {
var numLoadings = 0;
return {
request: function (config) {
numLoadings++;
// Show loader
$rootScope.$broadcast("loader_show");
return config || $q.when(config)
},
response: function (response) {
if ((--numLoadings) === 0) {
// Hide loader
$rootScope.$broadcast("loader_hide");
}
return response || $q.when(response);
},
responseError: function (response) {
if (!(--numLoadings)) {
// Hide loader
$rootScope.$broadcast("loader_hide");
}
return $q.reject(response);
}
};
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpInterceptor');
});
指令:
.directive("loader", function ($rootScope) {
return function ($scope, element, attrs) {
$scope.$on("loader_show", function () {
return element.show();
});
return $scope.$on("loader_hide", function () {
return element.hide();
});
};
}
)
CSS:
#loaderDiv {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1100;
background-color: white;
opacity: .6;
}
.ajax-loader {
position: absolute;
left: 50%;
top: 50%;
margin-left: -32px; /* -1 * image width / 2 */
margin-top: -32px; /* -1 * image height / 2 */
display: block;
}
HTML:
<div id="loaderDiv" loader>
<img src="src/assets/img/ajax_loader.gif" class="ajax-loader"/>
</div>
这篇关于通过实施和httpInterceptor 1.1.5 AngularJS加载微调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!