Comment faire un indicateur de chargement pour chaque action asynchrone (à l'aide de $q) dans un angularjs-app

Je sais qu'il existe plusieurs approches pour le chargement-indicateurs en angular js (celui-ci, par exemple: https://gist.github.com/maikeldaloo/5140733).

Mais ils doivent être configurés pour chaque appel, ou - s'ils agissent à l'échelle mondiale, comme je veux, il suffit d'appliquer à http demandes, mais pas de $q-promet d'être utilisée dans les services.

Le mondial indicateurs de chargement, j'ai vu jusqu'à présent, le travail avec

$httpProvider.responseInterceptors.push(interceptor);

Est-il quelque chose de similaire pour $q, comme un $qProvider.reponseInterceptors? Et si non, quel serait le moyen le plus pratique de mettre en œuvre une telle fonctionnalité? Est-il possible d'utiliser un décorateur-motif d'un certain type, par exemple?

  • J'espère que vous obtiendrez une réponse sur ce point, mais sinon je serais probablement commencer à enquêter sur l' $q code angulaire pour voir si vous pouvez faire un patch sur votre copie ou même potentiel de soumettre une demande d'extraction si rien de tel n'existe. Il y a également une longue mais très belle écriture sur la mise en œuvre de Q qui angulaire emprunté et allégée: github.com/kriskowal/q
  • Vous pensez vraiment que c'est une bonne idée de marteau cette fonctionnalité directement à $q? Que faire si je ne veux PAS l'indicateur à afficher (par exemple, pour une promesse créé par une boîte de dialogue modale, pas une requête AJAX)? En outre, il est assez simple à faire avec un service. Dans mon projet actuel, c'est fait avec une seule ligne à chaque fois que j'ai besoin de bloquer l'INTERFACE utilisateur sur une promesse, ou $resource: uiBlocker.block(promise).
  • pas dans toutes les circonstances. Mais pour les petits projets, ce serait très gentil. D'autre part, je pense qu'il serait intelligent de façons de gérer une telle fonctionnalité, quand il y a une sorte de mondial de chargement de l'état disponible. Je serais intéressé par l'explication plus détaillée de votre approche si!