Maison > interface Web > js tutoriel > Comment puis-je empêcher le scintillement de la route dans AngularJS en attendant les données ?

Comment puis-je empêcher le scintillement de la route dans AngularJS en attendant les données ?

Mary-Kate Olsen
Libérer: 2024-11-30 20:33:12
original
492 Les gens l'ont consulté

How Can I Prevent Route Flickering in AngularJS While Waiting for Data?

Bloquer les modifications de route AngularJS jusqu'à la fin du chargement des données

Dans AngularJS, les transitions de route peuvent parfois provoquer un scintillement ou des artefacts visuels lorsque les données ne sont pas complètement chargées avant que le nouvel itinéraire ne soit affiché. Pour atténuer ce problème, il est possible de retarder les changements d'itinéraire jusqu'à ce que toutes les données nécessaires aient été récupérées et traitées.

Résoudre les promesses avec $routeProvider

Le $routeProvider dans AngularJS vous permet de résoudre les dépendances de données avant qu'un changement d'itinéraire puisse se produire. En fournissant une propriété de résolution dans la configuration de la route, vous pouvez définir une fonction qui renvoie une promesse. Le changement d'itinéraire sera retardé jusqu'à ce que toutes les promesses associées à l'itinéraire aient été résolues.

Exemple pour un ProjectsController

Considérez la définition d'itinéraire suivante pour un ProjectsController :

angular.module('app').config(['$routeProvider', function ($routeProvider) {
  $routeProvider.when('/projects', {
    templateUrl: 'projects/index.html',
    controller: 'ProjectsController',
    resolve: {
      projects: function (ProjectService) {
        // Function to fetch project data
        return ProjectService.query();
      },
      delay: function ($q, $defer) {
        // Function to add a delay for demonstration purposes
        let delay = $q.defer();
        $defer(delay.resolve, 1000);
        return delay.promise;
      }
    }
  });
}]);
Copier après la connexion

Dans cet exemple, l'objet de résolution définit deux fonctions :

  • projets :Cette fonction renvoie une promesse qui récupère tous les projets du backend à l'aide de ProjectService.
  • délai : Cette fonction ajoute un délai de 1000 millisecondes pour la démonstration fins.

Conclusion

En utilisant la propriété de résolution dans $routeProvider, les applications AngularJS peuvent empêcher efficacement le scintillement de l'itinéraire en garantissant que toutes les dépendances de données sont satisfaites avant la transition. vers un nouvel itinéraire. Cette technique améliore considérablement l'expérience utilisateur en offrant une expérience de navigation fluide et sans scintillement.

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