用路由器解决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; }); }] } })