如何防止ui-router参数覆盖?

时间:2016-03-17 10:26:22

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

我目前正在开发一个有多个子路径的网站,我想为用户个人资料创建一个简单的网址,例如:

mydomain.com/someusername

但是使用我当前的UI-Router状态配置,它会覆盖我的所有其他网址,我猜是因为它也将其他路由视为参数。

.state('profile', {
  url: '/{username}',
  template: '...',
  controller: '...',
})
.state('other', {
  url: '/other',
  template: '...',
  controller: '...',
});

(就像在这个例子中,“其他”状态将被视为配置文件状态中的参数)

我也试过从根状态继承它,但这也没有用。我可以通过在用户名前面使用额外的关键字来解决问题(例如:mydomain.com/user/someusername),但从用户体验的角度来看,这有点复杂。

有没有办法像我正在努力做到这一点?

1 个答案:

答案 0 :(得分:1)

状态定义的顺序很重要..只需切换它们

// more specific
.state('other', {
  url: '/other',
  template: '...',
  controller: '...',
})
// more general
.state('profile', {
  url: '/{username}',
  template: '...',
  controller: '...',
})

UI-Router正在将状态添加到队列中,然后迭代它以查找匹配项。因此,如果一般是最后的......将更准确地找到更具体的