Разрешение ui-router с динамическими параметрами
Это, наверное, просто, но я ничего не могу найти в документах, а googling не помог. Я пытаюсь определить состояние в $stateProvider
, где URL-адрес, который мне нужно направить на сервер, чтобы вытащить нужные данные, зависит от параметра URL-адреса состояния. Короче говоря, что-то вроде:
.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; });
}
}
})
Вышеуказанное не работает. Я попытался ввести $routeParams
, чтобы получить нужный параметр cat
, без везения. Какой правильный способ сделать это?
Ответы
Ответ 1
Вы были рядом с $routeParams
. Если вы используете ui-router, используйте $stateParams
.
Этот код работает для меня:
.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; });
}]
}
})
Ответ 2
Для тех, кто использует ui-router 1.0 $stateParams
устарел, вы должны использовать $transition$
вместо этого:
.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; });
}]
}
})