2013-09-25 15 views
51

Questo è probabilmente semplice ma non riesco a trovare nulla nei documenti e googling non aiuta. Sto cercando di definire uno stato in $stateProvider dove l'URL che devo colpire sul server per estrarre i dati necessari dipende da un parametro URL di stato. In breve, qualcosa del tipo:risolvi ui-router con parametri dinamici

.state('recipes.category', { 
    url: '/:cat', 
    templateUrl: '/partials/recipes.category.html', 
    controller: 'RecipesCategoryCtrl', 
    resolve: { 
     category: function($http) { 
     return $http.get('/recipes/' + cat) 
      .then(function(data) { return data.data; }); 
     } 
    } 
    }) 

Quanto sopra non funziona. Ho provato a iniettare $routeParams per ottenere il parametro necessario cat, senza fortuna. Qual è il modo giusto per farlo?

risposta

102

Eri vicino allo $routeParams. Se si utilizza ui-router, utilizzare invece $stateParams. Questo codice funziona per me:

.state('recipes.category', { 
    url: '/:cat', 
    templateUrl: '/partials/recipes.category.html', 
    controller: 'RecipesCategoryCtrl', 
    resolve: { 
     category: ['$http','$stateParams', function($http, $stateParams) { 
      return $http.get('/recipes/' + $stateParams.cat) 
        .then(function(data) { return data.data; }); 
     }] 
    } 
}) 
+0

funziona per me troppo, Grazie! – kliron

+0

E come ottenere 'category' in controller RecipesCategoryCtrl? – dumitru

+1

è sufficiente iniettarlo: 'RecipesCategoryCtrl = function ($ scope, category) {$ scope.cat = category}' – Reto

6

Per coloro che utilizzano ui-router 1.0 $stateParamsis deprecated, si dovrebbe usare $transition$ oggetto invece:

.state('recipes.category', { 
 
    url: '/:cat', 
 
    templateUrl: '/partials/recipes.category.html', 
 
    controller: 'RecipesCategoryCtrl', 
 
    resolve: { 
 
     category: ['$http','$transition$', function($http, $transition$) { 
 
      return $http.get('/recipes/' + $transition$.params().cat) 
 
        .then(function(data) { return data.data; }); 
 
     }] 
 
    } 
 
})

Problemi correlati