我需要将两个参数传递和接收到我想要过渡到使用 ui-sref
的状态。
类似于使用下面的链接使用 home
和 foo
参数将状态转换为 bar
:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
在控制器中接收 foo
和 bar
值:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
我在控制器中 undefined
$stateParam
。
有人可以帮助我了解如何完成它吗?
编辑:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: 'SomeController'
}
}
});
原文由 skip 发布,翻译遵循 CC BY-SA 4.0 许可协议
我创建了一个 示例 来展示如何操作。更新后的
state
定义为:这将是控制器:
我们可以看到,state home 现在的 url 定义为:
这意味着,url 中的参数应为
这两个链接将正确地将参数传递给控制器:
此外,控制器确实使用
$stateParams
而不是$stateParam
。链接到文档:
你可以 在这里查看
params : {}
还有 新 的、更精细的设置
params : {}
。正如我们已经看到的,我们可以将参数声明为url
的一部分。但是使用params : {}
配置——我们可以扩展这个定义,甚至引入不属于 url 的参数:$stateProvider 的文档中描述了可用于参数的设置
以下只是摘录
value - {object|function=} :指定此参数的默认值。这隐式将此参数设置为可选…
数组 - {boolean=}:( 默认值:false)如果为 true,则参数值将被视为值数组。
squash - {bool|string=}: squash 配置当当前参数值与默认值相同时,默认参数值在 URL 中的表示方式。
我们可以这样调用这些参数:
在 此处 查看实际情况