我有一个角度应用,我正在使用ui-router模块。我在数据库中存储了一个带有URL和内容的“页面”。我还有一些其他状态/ URL有自己的模板。例如:
$stateProvider
.state('landing', {
url: '/',
templateUrl: 'landing-page.html'
})
.state('admin', {
url: '/admin',
templateUrl: 'admin.html'
})
.state('user', {
url: '/user',
templateUrl: 'user.html'
})
我想使用类似
的内容为页面定义状态.state('page',{
url: '??',
templateUrl: 'page.html'
})
如果我的页面动态存储在带有URL / slug和内容的数据库中,那么上面的url应该是什么。如何在此处添加URL / slug?如果我在下面尝试:
.state('page', {
url: '/{path:.*}',
templateUrl: 'page.html'
})
然后它将包括其他状态的每个页面路由到同一个模板。我总是可以在URL前加上/ page之类的内容,但我不想这样做。我希望能够将页面加载为:
www.mysite.com/page-1
www.mysite.com/whatever-url
等
答案 0 :(得分:1)
没关系。我想通了。诀窍更多的是使用正则表达式。这是我的解决方案
.state('page', {
url: '/{path:(?!admin|user)[a-z0-9\-]+}',
templateUrl: 'page.html'
})
这将忽略我们首先想要的以/admin
和/user
开头的路线。然后,它将检查url是否至少有1个字符。