我定义了这些路线:
.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,即使我认为我在路由中定义了它。 为什么会这样?
感谢您的帮助!
答案 0 :(得分:6)
当您访问网址/sport/12
时,SportCtrl
将被实例化两次:状态sport
一次,状态sport.selected
一次。对于第一个状态,没有与状态相关的参数,因此$stateParams.sport
未定义。
请注意,对状态和子状态使用相同的模板非常奇怪。您将在同一模板的ui-view div中嵌入模板。