http インターセプター ディレクティブを使用してスピナーをロードしています。スクリプト コードは次のとおりです。
createProfileModule.config(['$httpProvider', function ($httpProvider) {
var $http,
interceptor = ['$q', '$injector', function ($q, $injector) {
var error;
function success(response) {
// get $http via $injector because of circular dependency problem
$http = $http || $injector.get('$http');
if($http.pendingRequests.length < 1) {
$('#loadingWidget').hide();
}
return response;
}
function error(response) {
// get $http via $injector because of circular dependency problem
$http = $http || $injector.get('$http');
if($http.pendingRequests.length < 1) {
$('#loadingWidget').hide();
}
return $q.reject(response);
}
return function (promise) {
$('#loadingWidget').show();
return promise.then(success, error);
}
}];
$httpProvider.responseInterceptors.push(interceptor);
}]);
そしてHTMLでは、必要なCSSでこのようにdivを呼び出しています
<div id="loadingWidget" style="display:none;"></div>
<style>
#loadingWidget { position: absolute; z-index:2;
top: 0;
left: 0;
height:100%;
width:100%;
background: #000000 url(/ERegII-1.0/images/ajax-loader.gif) no-repeat center;
cursor: not-allowed;
filter: alpha(opacity=60);
opacity: 0.6;
content:'Loading..';
background-size:100px 100px;
}
</style>
このスピナーを賢くしたいこと。小さな http 呼び出しごとにスピナーを表示したくありません。したがって、リクエストが非常に小さく、数ミリ秒かかる場合は、スピナーを表示したくありません。スピナーに遅延時間を追加したい.. 2秒としましょう。したがって、リクエストに2秒以上かかる場合、このスピナーが表示されるはずです。それ以外の場合は、表示したくありません。誰かがこれの解決策を見つけるのを手伝ってくれますか? https://github.com/ajoslin/angular-promise-trackerを試しましたが、うまくいかないようです。
誰かがそれをより賢くするのを手伝ってくれますか?