我有一个angularJS应用程序,其中路由可以是以下之一
www.website.com/blog/xyz
www.website.com/blog/xyz/title/other-params
在上一个网址中,title参数用于用户可读性,因此在网址中不是必须的。因此我在下面使用angularJS代码作为我的路线。
$routeProvider
.when('/blog', {
templateUrl : url,
controller : 'blogsHome'
})
.when('/blog/:blog_id', {
templateUrl : url,
controller : 'blogInfo'
})
.when('/blog/:blog_id/:url_params*', {
templateUrl : url,
controller : 'blogInfo'
});
现在,在上面的代码中,我必须在时添加 middle ,因为angular expect :url_params
并且不能为空。有什么方法可以在语句时省略中间 吗?
答案 0 :(得分:1)
添加*
以动态使用 多级目录 ,并添加?
以使用可选路径。但是,当您希望使用多个级别但可选时,可以尝试这样?:multipleOptionalParams*?
所以试试这个:
$routeProvider
.when('/', {
templateUrl : 'blog.html',
controller : 'myCtrl'
})
.when('/blog/:blog_id/?:url_params*?', {
templateUrl : 'details.html',
controller : 'details'
});
可以访问Plunker Demo
答案 1 :(得分:0)
我想用第二个替换第三个来改变第一个匹配时的序列。
像这样,最复杂的第一个:$routeProvider
.when('/blog', {
templateUrl : url,
controller : 'blogsHome'
})
.when('/blog/:blog_id/:url_params*', {
templateUrl : url,
controller : 'blogInfo'
})
.when('/blog/:blog_id', {
templateUrl : url,
controller : 'blogInfo'
});