$ stateParams返回undefined

时间:2014-04-14 16:23:06

标签: angularjs angular-ui-router angularjs-controller

我定义了这些路线:

    .state('sport',
      url: '/sport'
      templateUrl: '/templates/sport'
      controller: 'SportCtrl'
    )
    .state('sport.selected'
      url: '/:sport'
      templateUrl: '/templates/sport'
      controller: 'SportCtrl'
    )

我让这个控制器试图使用sport.selected状态给出的运动参数。

     angular.module('myApp')
       .controller('SportCtrl', ['$scope', 'ParseService', 
                   '$stateParams', function ($scope, ParseService, $stateParams) {

          var sportURL = $stateParams.sport;

      ...
    });

出于某种原因,当我在控制器中调用$ stateParams.sport时,它返回undefined,即使我认为我在路由中定义了它。 为什么会这样?

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

当您访问网址/sport/12时,SportCtrl将被实例化两次:状态sport一次,状态sport.selected一次。对于第一个状态,没有与状态相关的参数,因此$stateParams.sport未定义。

请注意,对状态和子状态使用相同的模板非常奇怪。您将在同一模板的ui-view div中嵌入模板。