Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ANGLARJS UI路由器可选中间的URL段_Javascript_Angularjs_Angular Ui Router_State - Fatal编程技术网

Javascript ANGLARJS UI路由器可选中间的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段:

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以外的其他值。无论如何,谢谢你的回答。是的,我理解你的观点,但正如我所说的,子类别可以是一个大列表,可以动态添加到数据库中。