我正在使用ui-router来表示AngularJS应用程序中的状态。在其中,我想更改状态而不更改URL(基本上是“详细视图”已更新,但这不会影响URL)。
我使用的<a ui-sref="item.detail({id: item.id})">显示细节,但如果我指定像一个URL这仅适用url: "/detail-:id"于我$stateProvider。
<a ui-sref="item.detail({id: item.id})">
url: "/detail-:id"
$stateProvider
在我看来,当前状态仅通过URL定义。
感谢您的回答,它确实对正确的方向有所帮助,但是我想添加更完整的描述。
在我的特定问题中,有一个复杂的因素,因为我需要向其注入非URL参数的状态是子状态。那使事情有些复杂。
该params: ['id']部分在$stateProvider声明中如下所示:
params: ['id']
$stateProvider.state('parent', { url: '/:parentParam', templateUrl: '...', controller: '...' }). state('parent.child', { params: ['parentParam','childParam'], templateUrl: '...', controller: '...' });
参数名称按如下方式连接到ui-sref属性:
ui-sref
<a ui-sref=".child({ childParam: 'foo' })">
收获是:
如果父州也有URL参数,则子级 也 需要 在其params数组中声明。在上面的示例中,“ parentParam”必须包含在子状态中。
params
如果您不这样做,则在初始化应用程序时将引发模块错误。至少在撰写本文时(v.0.2.10)的最新版本中是如此。
编辑
@gulsahkandemir指出
状态定义中的参数声明已从参数:[‘id’]更改为参数:{id:{}}
从变更日志来看,从v0.2.11开始似乎是这种情况
参数的详细信息可以在官方文档中找到