Javascript ANGLARJS UI路由器可选中间的URL段
对于以下示例,我希望有一个可选的url段:Javascript ANGLARJS UI路由器可选中间的URL段,javascript,angularjs,angular-ui-router,state,Javascript,Angularjs,Angular Ui Router,State,对于以下示例,我希望有一个可选的url段: url: "/post/:category/:subcategory/:title/{id:int}", 在上面的示例中,子类别是可选的。例如,它将接受: url: "/post/sports/football/some-title/10", 它还将接受: url: "/post/sports/some-title/15", 没有子类别的。我可以使用分离状态来实现这一点,但是有什么规则吗? 请注意,只有子类别段是可选的。其他是强制性的 这里详细描
url: "/post/:category/:subcategory/:title/{id:int}",
在上面的示例中,子类别是可选的。例如,它将接受:
url: "/post/sports/football/some-title/10",
它还将接受:
url: "/post/sports/some-title/15",
没有子类别的。我可以使用分离状态来实现这一点,但是有什么规则吗?
请注意,只有子类别段是可选的。其他是强制性的 这里详细描述了解决方案 下面是我们如何定义此类参数:
.state('state', {
url: '/:category/{subcategory:(?:football|tennis|hokey)}/:title/:id',
abstract: true,
template: '<div ui-view=""></div>',
params: {subcategory : { squash : true, value: 'football' }}
})
.state('state'{
url:'/:category/{子类别:(?:football | network | hokey)}/:title/:id',,
摘要:没错,
模板:“”,
参数:{子类别:{squash:true,值:'football'}
})
.state('post'){
url:'/post/:category/:subcategory/:title/:{id:int}',
templateUrl:'views/post.html',
控制器:'PostTRL',
参数:{
子类别:{squash:true,value:null},
}
})
欲了解更多信息您能否解释这一部分
(?:足球|网球|霍基)
?实际上,子类别可以是一个很长的列表。这是正则表达式,子类别的一组已知值。这将有助于用户界面路由器理解,如果在本部分中/post/sports/some title/
是某个标题子类别或只是另一个参数。。。换句话说,没有它(这是非常重要的部分),UI路由器很难决定。。。是否为子类别。所以我们需要这样的东西;)好的,实际上我不关心除id以外的其他值。无论如何,谢谢你的回答。是的,我理解你的观点,但正如我所说的,子类别可以是一个大列表,可以动态添加到数据库中。