C'est probablement simple, mais je ne trouve rien dans la documentation et googler n'a pas aidé. J'essaie de définir un état dans $stateProvider
où l'URL que je dois trouver sur le serveur pour extraire les données nécessaires dépend d'un paramètre d'URL d'état. En bref, quelque chose comme:
.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; });
}
}
})
Ce qui précède ne fonctionne pas. J'ai essayé de m'injecter $routeParams
pour obtenir le paramètre nécessaire cat
, sans aucune chance. Quelle est la bonne façon de faire cela?
Vous étiez proche avec $routeParams
. Si vous utilisez ui-router, utilisez $stateParams
au lieu. Ce code fonctionne pour moi:
.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; });
}]
}
})
Pour ceux qui utilisent ui-router 1.0 $stateParams
est obsolète , vous devriez utiliser $transition$
objet à la place:
.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; });
}]
}
})