用于动态页面URL的角度ui-router

时间:2015-10-23 20:58:31

标签: angularjs angular-ui-router

我有一个角度应用,我正在使用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

1 个答案:

答案 0 :(得分:1)

没关系。我想通了。诀窍更多的是使用正则表达式。这是我的解决方案

.state('page', {
       url: '/{path:(?!admin|user)[a-z0-9\-]+}',
       templateUrl: 'page.html'
 })

这将忽略我们首先想要的以/admin/user开头的路线。然后,它将检查url是否至少有1个字符。