2015-10-26 3 views
-1

Je suivais cet exemple, sur la façon d'utiliser resolvehttp://blog.brunoscopelliti.com/show-route-only-after-all-promises-are-resolved/Resolve trouble angulaire

Mais cela ne fonctionne pas, la vue ne montre pas. Voici les parties essentielles du code que j'utilise:

angular.module('fifaApp', ['ngRoute']) 
    .config(function($routeProvider) { 

    $routeProvider.when('/', { 
     templateUrl: 'views/team_list.html', 
     controller: 'TeamListCtrl as teamListCtrl', 
     resolve: { 
     teams: function (FifaService) { 
      return FifaService.getTeams(); 
     } 
    } 
    }) 
//For each route, we can decide to include the controller directly 
//in the HTML or using the controller configuration in the route. 
    .when('/login', { 
     templateUrl: 'views/login.html' 
    }) 
    .when('/team/:code', { 
     templateUrl: 'views/team_details.html', 
     controller:'TeamDetailsCtrl as teamDetailsCtrl', 
     resolve: { 
     //The auth resolve function returns a promise. 
     auth: ['$q', '$location', 'UserService', 
      function($q, $location, UserService) { 
      return UserService.session().then(
       function(success) {}, 
       function(err) { 
        $location.path('/login'); 
        $location.replace(); 
//reject the promise in the case of an error, 
// because we still want the promise to fail. 
//If we don’t $q.reject, 
//that tells AngularJS that the error was handled successfully     
        return $q.reject(err); 
      }); 
     }] 
     } 
    }); 
    $routeProvider.otherwise({ 
     redirectTo: '/' 
    }); 
    }); 

angular.module('fifaApp') 
    .factory('FifaService', ['$http', 
    function($http) { 
     var sdo = { 
     getTeams: function() { 
      var promise = return $http.get('/api/team'); 
      promise.success(function(response) { 
      return response; 
      }); 
      return promise; 
     }, 

     getTeamDetails: function(code) { 
      var promise = return $http.get('/api/team/' + code); 
      promise.success(function(response){ 
      return response; 
      }); 
      return promise; 
     } 
     } 
     return sdo; 
    }]) 

.controller('TeamListCtrl', ['FifaService','teams', 
    function(FifaService,teams) { 
     var self = this; 
     self.teams = teams.response; 

    }]) 

Ai-je raté quelque chose? Meilleures salutations

+0

'Mais il ne fonctionne pas, la vue est pas showing.' - s'il vous plaît être plus précis et montrer, si possible, les STACKTRACE/erreurs – Michael

+0

ne vous demande pas la [même question ] (http://stackoverflow.com/questions/33331988/ng-view-not-showing-with-resolve) il y a quelques heures? – zeroflagL

+0

@zeroflagL Je ne pense pas, parce que j'essaie de suivre un exemple spécifique dans le lien – user1665355

Répondre

1

Peut-être utiliser un IDE avec la prise en charge de la syntaxe javascript. Vous avez quelques problèmes ...

angular.module('fifaApp', ['ngRoute']) 
    .config(function($routeProvider) { 

    $routeProvider.when('/', { 
     templateUrl: 'views/team_list.html', 
     controller: 'TeamListCtrl as teamListCtrl', 
     resolve: { 
     teams: function(FifaService) { 
      return FifaService.getTeams(); 
     } 
     } 
    }) 
    }); // <-- missing brackets 

angular.module('fifaApp') 
    .factory('FifaService', ['$http', 
    function($http) { 
     var sdo = { 
     getTeams: function() { 
      var promise = $http.get('/api/team'); // <-- remove return statement 
      promise.success(function(response) { 
      return response; 
      }); 
      return promise; 
     }, 

     getTeamDetails: function(code) { 
      var promise = $http.get('/api/team/' + code); // <-- remove return statement 
      promise.success(function(response) { 
      return response; 
      }); 
      return promise; 
     } 
     } 
     return sdo; 
    } 
    ]) 

.controller('TeamListCtrl', ['FifaService', 'teams', 
    function(FifaService, teams) { 
    var self = this; 
    self.teams = teams.response; 

    } 
]); 
+0

J'ai écrit que je n'ai publié que la partie pertinente du code. J'ai mis à jour la partie 'config', maintenant c'est la partie complète. Désolé pour l'unclearaty – user1665355

+0

Peut-être que vous devriez lire toute la réponse! Vous devez supprimer les instructions 'return'. Voir http://plnkr.co/edit/5PRorPjFpOK21PJHG2TL?p=preview – Michael

+0

Je pense avoir trouvé quel pourrait être le problème. 'getTeamDetails' en usine ... Si je le supprime d'usine alors ça marche. Sinon, ce n'est pas le cas. – user1665355