在UI-router(Angular)中使用子url覆盖父URL

时间:2016-08-03 13:34:05

标签: angularjs angular-ui-router angularjs-routing

这是我用于我的ui-router的配置:

.state('parent', {
    url: '/child1'
    controller: ParentController,
    abstract: true
})

.state('parent.child1', {
    url: ''
})

.state('parent.child2', {
    url: '/child2'
})

我想要实现什么?

我想要一个我想要默认的/ child1网址,所以我将父网址设为抽象,子状态网址为'空白'。

所以我希望当用户访问child2状态时,父url会被替换而不是附加它。我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:5)

如果我理解你,(如果我错了,请纠正我)你正在设置路由服务以实现以下路线:

//child1/child2,您希望所有州都与ParentController绑定

如果这是正确的,您可以通过以下方式实现此目的:

.state('parent', {
  url: '/',
  controller: ParentController,
})

.state('parent.child1', {
  url: '^/child1'
})

.state('parent.child2', {
  url: '^/child2'
})

例如,如果我们运行https://localhost:3000,我们可以这样导航:

parent/会给我们https://localhost:3000/

parent.child1/child1会给我们https://localhost:3000/child1

parent.child2/child2会给我们https://localhost:3000/child2

所有州都会调用ParentController。