我创建了一个示例来说明如何操作。更新的state
定义将是:
$stateProvider
.state('home', {
url: '/:foo?bar',
views: {
'': {
templateUrl: 'tpl.home.html',
controller: 'MainRootCtrl'
},
...
}
这将是控制器:
.controller('MainRootCtrl', function($scope, $state, $stateParams) {
//..
var foo = $stateParams.foo; //getting fooVal
var bar = $stateParams.bar; //getting barVal
//..
$scope.state = $state.current
$scope.params = $stateParams;
})
我们可以看到,状态状态现在的url定义为:
url: '/:foo?bar',
这意味着url中的参数应为
/fooVal?bar=barValue
这两个链接将正确地将参数传递给控制器??:
<a ui-sref="home({foo: 'fooVal1', bar: 'barVal1'})">
<a ui-sref="home({foo: 'fooVal2', bar: 'barVal2'})">
另外,控制器确实消耗$stateParams
而不是$stateParam
。