2016-11-11 4 views
0

J'essaie d'utiliser la fonction de résolution dans mon fournisseur d'état de routeur ui. J'ai configuré comme suit:L'ui-routeur AngularJS ne résout pas l'appel de service

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) { 
... 
$stateProvider.state('expositions', { 
     url: '/Expositions', 
     views: { 
      "container": { 
       templateUrl: '/views/expositions.html', 
       resolve: { 
        expositions: function ($http) { 
         return $http.get('/api/site/expositions').then(
          function (response) { 
           console.log("DATA", response.data); 
           return response.data; 
          }, 
          function (error) { 
           console.log("ERROR", error); 
          }) 
        } 
       } 
      } 
     } 
    }) 
... 
} 

Dans ce cas, quand je clique sur le lien de la détermination des expositions est pas appelé et la navigation n'a pas lieu: rien ne se passe.

J'ai aussi essayé de le configurer avec une usine (un service de ressources) comme suit:

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) { 
... 
$stateProvider.state('expositions', { 
     url: '/Expositions', 
     views: { 
      "container": { 
       templateUrl: '/views/expositions.html', 
       resolve: { 
        expositions: function (Resources) { 
         console.log("DATA", Resources); 
         return Resources.expositions(); 
        } 
       } 
      } 
     } 
    }) 
... 
} 

Le service de ressource est définie dans un fichier séparé comme suit:

resourcesService.js

(function() { 
    'use strict'; 

    angular 
     .module('site') 
     .factory('Resources', ['$resource', 
      function ($resource) { 
       return $resource('/api/site/:action/:id', {}, { 

        ... 

        expositions: { 
         method: 'GET', 
         params: { action: "expositions" }, 
         isArray: true 
         //transformResponse: function (data) { 
         // return angular.fromJson(data).list 
         //} 
        }, 

        ... 
       }); 
      } 
     ]); 
})(); 

également dans ce cas, rien ne se passe et la fonction de détermination est pas appelée.

Qu'est-ce qui me manque?

Merci d'avance!

Répondre

1

Essayez de donner cette

expositions: ['$http',function ($http) { 

Quelque chose comme ça

resolve: { 
       expositions: ['$http',function ($http) { 
        return $http.get('/api/site/expositions').then(
         function (response) { 
          console.log("DATA", response.data); 
          return response.data; 
         }], 
         function (error) { 
          console.log("ERROR", error); 
         }) 
       } 

Permettez-moi de savoir si cela a fonctionné