AngularJs - 控制器如何接收带参数的 $state.go
AngularJs - How does a controller receive $state.go with parameters
如果这是我的状态改变事件:
$state.go('MyState', { 'param1':'jimbob', 'param2':37});
MyStateCtrl 是如何获取这些值的?
我试过:
var param1 = $stateParams.param1
....
var param1 = $state.params.param1
....
都没有成功。
感谢异常值:
// state (via json)
"name" : "app.MyStateName",
"url": "/myView123/:param1/:param2",
// controller 1
$state.go('app.MyStateName', {param1: someValue1, param2: someValue2})
// controller 2
var param1 = $stateParams.param1;
var param2 = $stateParams.param2;
在您的状态定义中,您必须在 url 键的值中定义您的参数。
编辑:为澄清起见,以下内容应在状态定义中作为 key/properties 之一:
url: 'myurl/:myparam'
但是,值得注意的是,这会将 myparam 添加到 url。如果您不想更改 URL,则可以执行以下操作(来自 ui-router 的新功能):
params: {
myparam: {
value: null,
squash: true
}
}
在这两种情况下,您都可以通过调用 $stateParams.myparam 来简单地获取值。
值属性设置参数在传入之前的默认值。squash: true
确保该值不会影响url。
更多信息:
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider
如果这是我的状态改变事件:
$state.go('MyState', { 'param1':'jimbob', 'param2':37});
MyStateCtrl 是如何获取这些值的?
我试过:
var param1 = $stateParams.param1
....
var param1 = $state.params.param1
....
都没有成功。
感谢异常值:
// state (via json)
"name" : "app.MyStateName",
"url": "/myView123/:param1/:param2",
// controller 1
$state.go('app.MyStateName', {param1: someValue1, param2: someValue2})
// controller 2
var param1 = $stateParams.param1;
var param2 = $stateParams.param2;
在您的状态定义中,您必须在 url 键的值中定义您的参数。
编辑:为澄清起见,以下内容应在状态定义中作为 key/properties 之一:
url: 'myurl/:myparam'
但是,值得注意的是,这会将 myparam 添加到 url。如果您不想更改 URL,则可以执行以下操作(来自 ui-router 的新功能):
params: {
myparam: {
value: null,
squash: true
}
}
在这两种情况下,您都可以通过调用 $stateParams.myparam 来简单地获取值。
值属性设置参数在传入之前的默认值。squash: true
确保该值不会影响url。
更多信息:
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider