Maison > interface Web > js tutoriel > Comment AngularJS peut-il empêcher le scintillement des changements de route en retardant le chargement des données ?

Comment AngularJS peut-il empêcher le scintillement des changements de route en retardant le chargement des données ?

Patricia Arquette
Libérer: 2024-11-28 10:27:11
original
371 Les gens l'ont consulté

How Can AngularJS Prevent Route Change Flicker by Delaying Until Data Loads?

Retarder le changement d'itinéraire AngularJS jusqu'au chargement des données pour éviter le scintillement

Dans AngularJS, un changement brusque d'itinéraire peut parfois provoquer un scintillement lors du chargement de la nouvelle page. Pour résoudre ce problème, nous pouvons retarder l'affichage du nouvel itinéraire jusqu'à ce que toutes les données nécessaires aient été récupérées.

Problème : Comment configurer AngularJS pour attendre que les modèles et les données soient complètement chargés avant d'afficher un nouvel itinéraire, similaire au fonctionnement de Gmail ?

Solution :

Pour éviter clignotant, AngularJS fournit la propriété de résolution dans les routes. En définissant une fonction de résolution, nous pouvons spécifier quelles dépendances doivent être résolues avant de procéder au changement d'itinéraire.

Considérons l'exemple suivant :

function PhoneListCtrl($scope, phones) {
  $scope.phones = phones;
  $scope.orderProp = 'age';
}

PhoneListCtrl.resolve = {
  phones: function(Phone, $q) {
    var deferred = $q.defer();
    Phone.query(function(successData) {
      deferred.resolve(successData);
    }, function(errorData) {
      deferred.reject();
    });
    return deferred.promise;
  }
};
Copier après la connexion

Dans cet exemple, nous définissons une fonction de résolution fonction pour PhoneListCtrl qui renvoie une promesse pour les données du téléphone. Une fois la promesse résolue, les données deviennent disponibles pour le contrôleur.

Configuration de l'itinéraire dans l'application AngularJS :

angular.module('phonecat').config(['$routeProvider', function($routeProvider) {
  $routeProvider.
    when('/phones', {
      templateUrl: 'partials/phone-list.html',
      controller: PhoneListCtrl,
      resolve: PhoneListCtrl.resolve
    });
}]);
Copier après la connexion

En utilisant la propriété solve, AngularJS retarde le changement d'itinéraire jusqu'à ce que le La promesse du téléphone est résolue, garantissant que les données sont chargées avant l'affichage de la nouvelle page. Cette approche évite tout scintillement lors de la transition de page.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal