Angular - Gestion d'écran de chargement ( loader )
alexdu17200
Messages postés
1302
Date d'inscription
Statut
Membre
Dernière intervention
-
alexdu17200 Messages postés 1302 Date d'inscription Statut Membre Dernière intervention -
alexdu17200 Messages postés 1302 Date d'inscription Statut Membre Dernière intervention -
Salut à tous, j'aurai besoin de conseil pour gérer un loader avec Angular, celui-ci est pour l'instant une div qui s'affiche sur l'ensemble de la page au premier plan (avec un ng-show=loader en attribut).
Ce loader s'affiche lors de l'envoi/réception d'un requête http sur un serveur, jusqu'ici çà fonctionne, j'ai sur une page html un ng-repeat qui me traite et m'affiche le retour de cette requêtemais je souhaite que $scope.loader soit égal à false seulement après que le dernier élément de mon ng-repeat soit affiché.
Je n'ai pas trouvé d'explications assez claires (pour moi, petit développeur) sur la marche à suivre, je sais qu'il est conseillé de le déclarer dans une directive, mais il doit me manquer des éléments.
Actuellement, j'ai dans ma page .html
mon directives.js
J'utilise également une autre directive sans rapport avec cette partie, mais qui fonctionne correctement.
Ce loader s'affiche lors de l'envoi/réception d'un requête http sur un serveur, jusqu'ici çà fonctionne, j'ai sur une page html un ng-repeat qui me traite et m'affiche le retour de cette requêtemais je souhaite que $scope.loader soit égal à false seulement après que le dernier élément de mon ng-repeat soit affiché.
Je n'ai pas trouvé d'explications assez claires (pour moi, petit développeur) sur la marche à suivre, je sais qu'il est conseillé de le déclarer dans une directive, mais il doit me manquer des éléments.
Actuellement, j'ai dans ma page .html
(...) <div class="offres" ng-repeat="resultat in resultats.resultList" repeat-finished> {{resultat.nom}} (...) </div> (...)
mon directives.js
angular.module('myApp.directives', ['myApp.services']) .directive('repeatFinished', function() { return function(scope, element, attrs) { if (scope.$last){ angular.element(document).ready(function () { switch($location.path()){ //Test loader: case "/resultat" : $scope.loader=false; break; }});}};});
J'utilise également une autre directive sans rapport avec cette partie, mais qui fonctionne correctement.
A voir également:
- Angular page loader
- Supprimer page word - Guide
- Windows loader - Télécharger - Gestion de fichiers
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
- Page privée - Guide
5 réponses
Hello, je me suis aussi mis à angular depuis la dernière fois ... J'ai été rapidement confronté à ce problème et pour l'instant, concrètement, entre la soumission de mes requètes ajax et la réception des données j'utilise encore des loading screen en jquery même si je sais que c'est mal de mélanger les deux et souvent inutile, angular ayant certainement des fonctions pour ça, mais comme toi je découvre ...
Ceci-dit, d'après ce que j'ai lu, toute manipulation de la DOM doit être faite en dehors du contrôleur et en utilisant une directive tu es dans le bon ...
Maintenant, je ne comprends pas trop ce que tu veux faire et ce qui te pose problème ...
Ceci-dit, d'après ce que j'ai lu, toute manipulation de la DOM doit être faite en dehors du contrôleur et en utilisant une directive tu es dans le bon ...
Maintenant, je ne comprends pas trop ce que tu veux faire et ce qui te pose problème ...
Est-ce que ta directive est correctement appelée et à quel moment ? J'ai remarqué que c'est souvent des problèmes de timing, des choses qui sont lancées à des moments qu'on imaginerait pas, ou de stupides questions de syntaxe, qui posent problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait, j'ai une directive "findemonrepeat" que je mets en paramètre de mon ng-repeat (dans ma vue), dans la directive, je passe la variable $last, qui correspond au dernier élément de ma liste, vu que c'est un ng-repeat, il n'existe que lorsque le dernier élément de ma liste est affiché.
Et je veux qu'avant que ce $last n'apparaisse, avoir un loader (actuellement, c'est une div au premier plan, qui prend toute la page et qui apparaît/disparaît avec un ng-show=loader (loader est le nom de ma variable qui est égale à true ou false en fonction de ce que je veux faire.
Et je veux qu'avant que ce $last n'apparaisse, avoir un loader (actuellement, c'est une div au premier plan, qui prend toute la page et qui apparaît/disparaît avec un ng-show=loader (loader est le nom de ma variable qui est égale à true ou false en fonction de ce que je veux faire.