用路由器解决dynamic参数

这可能很简单,但我找不到文档中的任何东西,谷歌search没有帮助。 我试图在$stateProvider中定义一个状态,其中我需要在服务器上获取所需的URL的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参数,没有运气。 什么是这样做的正确方法?

你接近$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; }); }] } }) 

对于那些正在使用ui-router 1.0 $stateParams 的用户 ,您应该使用$transition$ object:

 .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; }); }] } })