Voici les actuel les anciennes incantations d'AngularJS :
angular.module('SharedServices', [])
.config(function ($httpProvider) {
$httpProvider.responseInterceptors.push('myHttpInterceptor');
var spinnerFunction = function (data, headersGetter) {
// todo start the spinner here
//alert('start spinner');
$('#mydiv').show();
return data;
};
$httpProvider.defaults.transformRequest.push(spinnerFunction);
})
// register the interceptor as a service, intercepts ALL angular ajax http calls
.factory('myHttpInterceptor', function ($q, $window) {
return function (promise) {
return promise.then(function (response) {
// do something on success
// todo hide the spinner
//alert('stop spinner');
$('#mydiv').hide();
return response;
}, function (response) {
// do something on error
// todo hide the spinner
//alert('stop spinner');
$('#mydiv').hide();
return $q.reject(response);
});
};
});
//regular angular initialization continued below....
angular.module('myApp', [ 'myApp.directives', 'SharedServices']).
//.......
Voici le reste (HTML / CSS)....using
$('#mydiv').show();
$('#mydiv').hide();
pour l'activer. NOTE : ce qui précède est utilisé dans le module angulaire au début de l'article.
#mydiv {
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
z-index:1000;
background-color:grey;
opacity: .8;
}
.ajax-loader {
position: absolute;
left: 50%;
top: 50%;
margin-left: -32px; /* -1 * image width / 2 */
margin-top: -32px; /* -1 * image height / 2 */
display: block;
}
<div id="mydiv">
<img src="lib/jQuery/images/ajax-loader.gif" class="ajax-loader"/>
</div>
2 votes
Si vous voulez un simple spinner basé sur les HTTP Interceptors, j'ai un module angulaire pour cela. Il utilise le populaire Identified Sham spinner. Jetez-y un coup d'oeil : github.com/harinair/angular-sham-spinner
1 votes
J'ai écrit un plugin angular-httpshooter il libère un événement avec les données de configuration juste avant le déclenchement de l'appel et en libère un autre juste après la réception de la réponse, vous pouvez écrire des chargeurs globaux qui capturent ces événements.