我目前正在开发一个有多个子路径的网站,我想为用户个人资料创建一个简单的网址,例如:
mydomain.com/someusername
但是使用我当前的UI-Router状态配置,它会覆盖我的所有其他网址,我猜是因为它也将其他路由视为参数。
.state('profile', {
url: '/{username}',
template: '...',
controller: '...',
})
.state('other', {
url: '/other',
template: '...',
controller: '...',
});
(就像在这个例子中,“其他”状态将被视为配置文件状态中的参数)
我也试过从根状态继承它,但这也没有用。我可以通过在用户名前面使用额外的关键字来解决问题(例如:mydomain.com/user/someusername
),但从用户体验的角度来看,这有点复杂。
有没有办法像我正在努力做到这一点?
答案 0 :(得分:1)
状态定义的顺序很重要..只需切换它们
// more specific
.state('other', {
url: '/other',
template: '...',
controller: '...',
})
// more general
.state('profile', {
url: '/{username}',
template: '...',
controller: '...',
})
UI-Router正在将状态添加到队列中,然后迭代它以查找匹配项。因此,如果一般是最后的......将更准确地找到更具体的