这可能很简单,但我在文档中找不到任何内容,谷歌搜索没有帮助。我正在尝试在$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
参数,但没有运气。这样做的正确方法是什么?
答案 0 :(得分:105)
你与$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; });
}]
}
})
答案 1 :(得分:8)
对于使用ui-router 1.0 $stateParams
is deprecated的用户,您应该使用$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; });
}]
}
})