Angular - Gestion d'écran de chargement ( loader )

Fermé
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 - 16 févr. 2014 à 19:11
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 - 5 mars 2014 à 11:33
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

(...)

<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:

5 réponses

alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
20 févr. 2014 à 17:30
UP
0
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
22 févr. 2014 à 22:43
UP
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 5/03/2014 à 06:25
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 ...
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 5/03/2014 à 06:30
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
5 mars 2014 à 11:33
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.
0