AngularJS, résoudre des données avant d'afficher la vue

Ce sujet a déjà été posée mais je n'arrivais pas à savoir quoi faire dans mon cas.

À L'Aide De AngularJS 1.0.5:

Avant de montrer le point de vue "login", je veux obtenir des données et de retarder le rendu de l'affichage, tandis que les données n'est pas chargé à partir d'une requête AJAX.

Voici le code principal. Est-ce la bonne manière?

angular.module('tfc', ['tfc.config', 'tfc.services', 'tfc.controllers']).config([
 '$routeProvider', '$locationProvider', '$httpProvider',
 function($routeProvider, $locationProvider, $httpProvider) {
  $routeProvider.when('/login', {
    templateUrl: 'views/login.html',
    controller: "RouteController",
    resolve: {
      data: function(DataResolver) {
        return DataResolver();
      }
    }
  });
}
]);

module_services = angular.module("tfc.services", []);

module_services.factory("DataResolver", [
 "$route", function($route) {
  console.log("init");
  return function() {
    //Tabletop is a lib to get data from google spreadsheets
    //basically this is an ajax request
    return Tabletop.init({
      key: "xxxxx",
      callback: function(data, tabletop) {
        console.log("[Debug][DataResolver] Data received!");
        return data;
      }
    });
  };
 }
]);
  • Peut-être la réponse d'AngularJS " créateur peut vous aide: stackoverflow.com/a/11972028/449162
  • Vous pouvez également affecter le résultat de la requête AJAX pour quelque chose dans votre $champ d'application et l'utilisation juste ng-show dans le code HTML.
  • C'est un bon moyen de le faire. c'est beaucoup mieux que d'utiliser ng-show ou ng-hide parce que dans votre contrôleur, vous aurez vos données et déjà peut écrire plus de code synchrone. Cela dit, le plus de procès pour un code d'examen site que SI, parce que vous n'avez pas de problème mais à la recherche d'améliorations dans votre code.
  • Drôle que Misko aussi posé la question.
  • double possible de Retarder AngularJS changement d'itinéraire jusqu'modèle chargé d'empêcher le scintillement
InformationsquelleAutor Laurent | 2013-03-06