我使用以下角度模块来创建加载屏幕,直到所有 $http 请求完成。它适用于 angular 1.0.7,但不适用于 angular 1.2.10 。我还需要使用角度资源和角度路线,所以我不能停留在角度 1.0.7 上。谁能帮我重写它以使用最新的角度?
angular
.module('loadingOnAJAX', [])
.config(function($httpProvider) {
var numLoadings = 0;
var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="loading.gif" /></div>')
.appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(function() {
return function(promise) {
numLoadings++;
loadingScreen.show();
var hide = function(r) {
if (!(--numLoadings)){
loadingScreen.hide();
}
return r;
};
return promise.then(hide, hide);
};
});
});
在 Angular 1.2.10 中,加载屏幕不会出现,但是如果我在 hide 函数中放置一个 alert(),加载屏幕会出现,直到我在警报上按 OK。所以我不确定是不是事情发生得太快了,或者是什么。
修正版:
angular
.module('loadingOnAJAX', [])
.config(function($httpProvider) {
var numLoadings = 0;
var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="loading.gif" /></div>')
.appendTo($('body')).hide();
$httpProvider.interceptors.push(function() {
return {
'request': function(config){
numLoadings++;
loadingScreen.show();
return config;
},
'response': function(response){
if (!(--numLoadings)){
loadingScreen.hide();
}
return response;
}
};
});
});