我想为用户配置文件提供一个很好的网址,即url.com/username
但也保留了网址,如url.com/类别,url.com/login等。
我已经为保留的url设置了状态。
.state('categories',{
url:'/categories', // i.e. url.com/categories
...
});然后,我尝试为根状态提供一个正则表达式,该正则表达式将匹配用户名,而不匹配上述保留的url状态。
$stateProvider
.state('profile',{
url:'/{username:^((categories|login(?!$)).+|(?!categories|login).+)$}',
...
});我回顾了UI-路由器URL-路由文档(https://github.com/angular-ui/ui-router/wiki/URL-Routing),并试图理解urlMatcher,并使我的regex遵从。
目前,它将带我进入保留状态,例如url.com/类别,但如果我试图访问url.com/someusername,它不会加载配置文件并将我带到url.com/
我需要改变我的准则吗?
是否可以使用某个正则表达式来完成此操作,还是urlMatcher无法处理保留的+动态url/“不匹配”正则表达式?
发布于 2014-09-12 19:07:29
你设立各州的命令在这里很重要。当它找到第一个匹配时,它将停止查找,只使用匹配的第一个状态。
这是有用的,当你想要捕捉一些状态之前,另一些。在设置动态状态之前,可以设置所有保留状态。
$stateProvider
.state('categories',{
url:'/categories',
...
})
.state('login',{
url:'/login',
...
})
.state('profile',{
url:'/:username',
...
});https://stackoverflow.com/questions/25802087
复制相似问题