AngularJS的ui-router中没有URL的状态参数
我正在使用ui-router在AngularJS应用程序中表示状态。 在这里我想改变状态而不改变URL(基本上“更新详细信息”,但这不应该影响URL)。
我使用<a ui-sref="item.detail({id: item.id})">
来显示详细信息,但是这只有在我的$stateProvider
指定一个类似url: "/detail-:id"
。
在我看来,目前的状态只是通过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
数组中声明它。 在上面的例子中,parentParam必须包含在childstate中。
如果你不这样做,那么应用程序初始化时将引发模块错误。 在撰写本文时最新版本(v.0.2.10)至less是真的。
编辑
@ gulsahkandemir指出
参数在状态定义中的声明已经变成params:{'id'] params:{id:{}}
从更新日志来看,这似乎是从v0.2.11开始的情况
参数的细节可以在官方文档中find
只是这个职位的新来者的附加信息:
参数在状态定义中的声明已经变成params: { id: {} }
params: ['id']
params: { id: {} }
所以请注意:)
资料来源: http : //angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider
我现在想通了,你需要使用params: ['id']
属性的状态,以便在不使用URL的时候不去掉密钥。