$ stateParams返回undefined

ngg*_*lez 7 angularjs angularjs-controller angular-ui-router

我定义了这些路线:

    .state('sport',
      url: '/sport'
      templateUrl: '/templates/sport'
      controller: 'SportCtrl'
    )
    .state('sport.selected'
      url: '/:sport'
      templateUrl: '/templates/sport'
      controller: 'SportCtrl'
    )
Run Code Online (Sandbox Code Playgroud)

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

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

          var sportURL = $stateParams.sport;

      ...
    });
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助!

JB *_*zet 6

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

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