我想为用户个人资料提供相当好的网址,例如url.com/username
但也保留了网址,例如url.com/categories,url.com / login等。
我有保留网址的状态设置,例如
.state('categories',{
url:'/categories', // i.e. url.com/categories
...
});
然后我尝试为根状态提供一个正则表达式,该正则表达式与用户名匹配,并且与上述保留的url状态不匹配,例如。
$stateProvider
.state('profile',{
url:'/{username:^((categories|login(?!$)).+|(?!categories|login).+)$}',
...
});
我查看了UI-Router URL-Routing文档(https://github.com/angular-ui/ui-router/wiki/URL-Routing)并尝试了解urlMatcher,并使我的正则表达式符合要求。
目前它将把我带到保留状态,例如url.com/categories但如果我尝试访问url.com/someusername,它不会加载配置文件并带我到url.com /
我需要更改我的正则表达式吗?
是否可以使用某个正则表达式执行此操作,或者urlMatcher无法处理保留的+动态网址/' s不匹配'正则表达式?
答案 0 :(得分:1)
您设置州的顺序在这里很重要。当它找到第一个匹配时,它将停止查找并使用它匹配的第一个状态。
当您想要在其他状态之前捕获某些状态时,这非常有用。您可以在设置动态状态之前设置所有保留状态。
$stateProvider
.state('categories',{
url:'/categories',
...
})
.state('login',{
url:'/login',
...
})
.state('profile',{
url:'/:username',
...
});