ui中没有URL的状态参数
我正在使用ui-router在我的AngularJS应用程序中表示状态。 其中我想更改状态而不更改URL(基本上“更新详细视图”,但不应该影响URL)。
我使用<a ui-sref="item.detail({id: item.id})">
来显示详细信息,但只有在我的$stateProvider
指定URL(如url: "/detail-:id"
$stateProvider
。
在我看来,目前的状态只能通过URL来定义。
感谢您的回答,它确实帮助我朝着正确的方向发展,但我只想添加更完整的说明。
在我的具体问题中有一个复杂的因素,因为我需要注入一个非URL参数的状态是一个子状态。 稍微复杂的事情。
params: ['id']
部分进入$stateProvider
声明中,如下所示:
$stateProvider.state('parent', {
url: '/:parentParam',
templateUrl: '...',
controller: '...'
}).
state('parent.child', {
params: ['parentParam','childParam'],
templateUrl: '...',
controller: '...'
});
并且param名称连接到ui-sref
属性,如下所示:
<a ui-sref=".child({ childParam: 'foo' })">
问题在于:
如果父状态也有URL参数,那么孩子也需要在其params
数组中声明该params
。 在上面的例子中,“parentParam”必须包含在childstate中。
如果你不这样做,那么应用程序初始化时将会引发模块错误。 在撰写本文时,最新版本(v.0.2.10)至少如此。
编辑
@gulsahkandemir指出
在州定义中的参数声明已经变成params:{'id'] params:{id:{}}
从更新日志来看,这似乎是从v0.2.11开始的情况
参数的细节可以在官方文档中找到
只是这个职位的新来者的附加信息:
在州定义中的参数声明已经变成params: { id: {} }
params: ['id']
params: { id: {} }
所以要注意:)
来源:http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider
我现在想通了,你需要使用params: ['id']
属性来让密钥在不使用URL时不被剥离。