【问题标题】:Angular UI Router: Automatically redirect to child state of parent stateAngular UI Router:自动重定向到父状态的子状态
【发布时间】:2017-08-08 22:35:15
【问题描述】:

我试图弄清楚是否有一种方法可以使用 UI-Router 自动重定向到父状态的子状态。

例如:

.state('parent', {
  url: '/parent',
  template: '<parent></parent>',
  redirectTo: 'parent.child'
})
.state('parent.child', {
  url: '/child',
  template: '<child></child>'
})
.state('parent.child-two', {
  url: '/child-two',
  template: '<child-two></child-two>'
})

访问parent 状态总是会将您重定向到parent.child 状态。我想避免像这样显式定义 redirectTo 属性:

.state('parent', {
  url: '/parent',
  template: '<parent></parent>',
  redirectTo: 'parent.child'
})

取而代之的是某种通配符,如下所示:

.state('parent', {
  url: '/parent',
  template: '<parent></parent>',
  redirectTo: 'parent.**'
})

感谢任何帮助。提前致谢。

【问题讨论】:

  • 为什么redirectTo: 'parent.child'不是一个好的解决方案?
  • 因为我可能有多个孩子,我只想将其重定向到第一个孩子。

标签: angularjs angular-ui-router


【解决方案1】:

这可能不是实现此目的的正确方法,但您可以在父控制器中添加:

$state.go($state.get().filter(function(cState) { return cState.name.indexOf('parent.') === 0 })[0])
  • 您使用$state.get() 检索所有状态
  • 然后您过滤结果以仅获取名称开头带有parent. 的状态,并使用[0] 获取第一个状态
  • 然后你用$state.go()进入这个状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多