Angularjs 具有动态参数的用户界面路由器解析

Angularjs 具有动态参数的用户界面路由器解析,angularjs,angular-ui,angular-ui-router,Angularjs,Angular Ui,Angular Ui Router,这可能很简单,但我在文档中找不到任何东西,谷歌也帮不上忙。我试图在$stateProvider中定义一个状态,其中我需要点击服务器以获取所需数据的URL取决于状态URL参数。简言之,类似于: .state('recipes.category', { url: '/:cat', templateUrl: '/partials/recipes.category.html', controller: 'RecipesCategoryCtrl', resolve: {

这可能很简单,但我在文档中找不到任何东西,谷歌也帮不上忙。我试图在
$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
参数,但没有成功。正确的做法是什么

您与
$routeParams
非常接近。如果使用ui路由器,请改用
$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的用户,您应该改用object:

.state('recipes.category'{
url:“/:cat”,
templateUrl:“/partials/recipes.category.html”,
控制器:“RecipesCategoryCtrl”,
决心:{
类别:['$http','$transition$',函数($http,$transition$){
返回$http.get('/recipes/'+$transition$.params().cat)
.then(函数(数据){return data.data;});
}]
}

})
以及如何在控制器RecipesCategoryCtrl中获取
类别
只需插入它:
RecipesCategoryCtrl=function($scope,category){$scope.cat=category}
$stateParams将只返回url中给定的参数(如{param}或:param)。我不希望我的目标状态有URL。此外,参数是一个对象。要以这种方式传递它,我必须先将其转换为JSON,然后再将其解析回来。太慢太乱了。