2015-10-23 82 views
0

我有一个角度应用程序,我正在使用UI路由器模块。我正在将数据库中的“页面”与URL和内容一起存储。我也有一些其他的国家/ URL有自己的模板。例如:用于动态页面URL的角度UI路由器

$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 /刺蛾内容。我如何在这里添加URL/slug?如果我尝试以下操作:

.state('page', { 
      url: '/{path:.*}', 
      templateUrl: 'page.html' 
    }) 

然后它会将包含其他状态的每个页面路由到同一模板。我总是可以在网址前加上/ page等内容,但我不想这么做。我希望能够加载页面:

www.mysite.com/page-1 
www.mysite.com/whatever-url 

回答

1

没关系。我明白了这一点。这个技巧更多的是使用正则表达式。这里是我的解决方案

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

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