我想在调用WebService时显示ionicLoading,我使用拦截器来执行此操作并且它正在工作。我也在使用HTTP缓存,但是当调用WebService并且至少调用一次(因此调用缓存并且它正在工作)时,不会显示ionicLoading。
以下是我的缓存代码:
$httpProvider.defaults.cache = true;
这是我的拦截器代码:
$httpProvider.interceptors.push(['$q', '$injector', '$rootScope', function ($q, $injector, $rootScope) {
return {
'request': function (config) {
if (config.url.indexOf('http') !== -1) {
config.showError = $rootScope.showError;
$rootScope.showError = true;
config.showLoading = $rootScope.showLoading;
$rootScope.showLoading = true;
if (config.showLoading) {
var $ionicLoading = $injector.get('$ionicLoading');
$ionicLoading.show({
template: '<ion-spinner icon="dots" class="spinner-energized"></ion-spinner>'
});
}
}
config.timeout = 40000;
return config;
},
'response': function (response) {
$rootScope.retryHttp = 0;
// do something on success
if (response.config.showLoading) {
var $ionicLoading = $injector.get('$ionicLoading');
$ionicLoading.hide();
}
当我使用调试器检查代码时,我注意到当WebService缓存数据时以及何时没有调用ionicLoading.show()
函数。