一尘不染

AngularJS的ui-router中没有URL的状态的参数

angularjs

我正在使用ui-router来表示AngularJS应用程序中的状态。在其中,我想更改状态而不更改URL(基本上是“详细视图”已更新,但这不会影响URL)。

我使用的<a ui-sref="item.detail({id: item.id})">显示细节,但如果我指定像一个URL这仅适用url: "/detail-:id"于我$stateProvider

在我看来,当前状态仅通过URL定义。


阅读 245

收藏
2020-07-04

共1个答案

一尘不染

感谢您的回答,它确实对正确的方向有所帮助,但是我想添加更完整的描述。

在我的特定问题中,有一个复杂的因素,因为我需要向其注入非URL参数的状态是子状态。那使事情有些复杂。

params: ['id']部分在$stateProvider声明中如下所示:

$stateProvider.state('parent', {
    url: '/:parentParam',
    templateUrl: '...',
    controller: '...'
}).
state('parent.child', {
    params: ['parentParam','childParam'],
    templateUrl: '...',
    controller: '...'
});

参数名称按如下方式连接到ui-sref属性:

<a ui-sref=".child({ childParam: 'foo' })">

收获是:

如果父州也有URL参数,则子级 也 需要 在其params数组中声明。在上面的示例中,“ parentParam”必须包含在子状态中。

如果您不这样做,则在初始化应用程序时将引发模块错误。至少在撰写本文时(v.0.2.10)的最新版本中是如此。

编辑

@gulsahkandemir指出

状态定义中的参数声明已从参数:[‘id’]更改为参数:{id:{}}

从变更日志来看,从v0.2.11开始似乎是这种情况

参数的详细信息可以在官方文档中找到

2020-07-04