54

这可能很简单,但我在文档中找不到任何内容,谷歌搜索也没有帮助。我正在尝试定义一种状态,$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参数,但没有运气。这样做的正确方法是什么?

4

2 回答 2

106

你很亲密$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; });
         }]
     }
})
于 2013-09-25T18:49:48.713 回答
10

对于那些使用 ui-router 1.0 $stateParams is deprecated的人,您应该使用$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; });
         }]
     }
})

于 2017-04-21T09:17:07.950 回答