IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AngularJS Discussion :

Affichage / Rafraichissement nouvelle page


Sujet :

AngularJS

  1. #1
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut Affichage / Rafraichissement nouvelle page
    Bonjour les amis,

    j'apprends AngularJS, mon site tourne mais je remarque un problème de rafraîchissement de la nouvelle page. (ça le fait parfois)

    voici les étapes :
    1) je clique sur une nouvelle page

    2) récupération données via API REST

    loading est activé (affichage du spinner)

    3)
    quelques ms plus tard :
    le loading se désactive

    juste après, je vois rapidement l'ancienne page être remplacé par la nouvelle page.


    conclusion :
    je trouve ça, assez désagréable à voir.
    je voudrais que l'ancienne page soit remplacée par la nouvelle durant que le loading est activé.[/B]


    controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Product.getAll()
            .then(function() {
                this.products = Product.products;
                $rootScope.loading = false;
            }.bind(this));
    factory:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Product.getAll = function() {
            return $http.get('http://apirest-no.fr/api/v1/produits')
                .success(function(data) {
                    Product.products = data;
                });
        };

    quelle solution ?

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Fais un plunkr stp.

  3. #3
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    je n'ai pas de plunker.
    mais d'après votre expérience, vous connaissez ce problème ou pas ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    une idée comme ça ...peut être mettre un ng-show sur ta div qui montre ta div seulement quand ton service envoie les vars?
    Après je ne sais pas... Peut être un pb de routing angularjs ?

    l'avantage du 2 way binding est précisemment qu'il évite le problème que tu as ... Alors bizarre ton problème, c'est dans le HTML que le pb doit se situer ...

  5. #5
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    j'ai pourtant le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $rootScope.loading = true;                          // (1)  active spinner d'attente
     
    Product.getAll()
            .then(function() {
                this.products = Product.products;    // (2)   récupère les données API REST
                $rootScope.loading = false;           // (3)   desactive le spinner
            }.bind(this));                                   //(4)    met à jour le rendu
    déjà, ce bout de code je l'ai pris de divers tutos et ils font tous ainsi.

    ce que je comprends pas, c'est entre le (3) et (4) . le spinner est desactivé avant le rendu d'ou mon problème, non ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Heu bizarre ton bind, voici mes requêtes $http avec angular JS, il n'y a pas de bind a faire, le dirty cheking fait tout tout seul, même dans les graphiques ou n'importe quel truc JSON :

    Voici un exemple de requête $http :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $http.get('crud.php?action=get_intervenants').success(function(data){
    	$scope.intervenants = data;
    }).error(function(data){ $scope.infos = " Pas de données ou pb de connexion"});
    ou alors, vu que tu utilises un service, voici un exemple de ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /* CHARGE LES CATEGORIES DEMPLOYES POUR LE SELECT CATEGORIES*/
    	$scope.categEmployes = categoriesService.getCategories();
    Qui pointe sur ma factory :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    app.factory('categoriesService', ['$firebaseArray', 'FIREBASE_URI', function ($firebaseArray, FIREBASE_URI) {
     
    	var ref = new Firebase(FIREBASE_URI);
    	var categories = $firebaseArray(ref.child('categEmployes'));
     
     
        var getCategories = function () {
            return categories;
        };
     
        var ajouterCategorie = function (categorie) {
            categories.$add(categorie);
        };
     
        var majCategorie = function (id) {
            categories.$save(id);
        };
     
        var supprimerCategorie = function (id) {
            categories.$remove(id);
        };
     
    	return {
            getCategories: 		getCategories,
            ajouterCategorie: 	ajouterCategorie,
            majCategorie:		majCategorie,
            supprimerCategorie: supprimerCategorie
     
        }
    }])
    Ah ok tu utilises la syntaxe this... bah là désolé je peux rien pour toi, j'utilise pas cette syntaxe, par ce que je trouve cela plus difficile à comprendre(Enfin c'est juste mon avis personnel).

    Je ne vois pas ce qu'un bind vient faire là, alors que tu as déjà la ligne this.products = Product.products; qui est censée mettre la vue à jour, je ne vois pas pourquoi il faut encore ajouter un bind .. .
    Voilà pourquoi je n'utilise jamais la syntaxe this... A moins que t'es sur angular 2 ?
    Dernière modification par Invité ; 31/08/2016 à 13h59.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/09/2015, 17h37
  2. Réponses: 10
    Dernier message: 28/10/2010, 22h01
  3. Réponses: 1
    Dernier message: 26/08/2008, 14h43
  4. affichage d'une nouvelle page JSP
    Par rose_des_sables dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 13/06/2007, 00h50
  5. [PHP-JS] RadioButton et affichage de nouvelle page
    Par ikeaboy dans le forum Langage
    Réponses: 6
    Dernier message: 01/08/2006, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo