Javascript 如何在AngularJS路由中匹配可选路由和未确定路由?
在AngularJS路由中,我知道星号(*)可以匹配带斜线的路径,问号(?)可以匹配可选路径,但如何组合它们呢?我想将Javascript 如何在AngularJS路由中匹配可选路由和未确定路由?,javascript,angularjs,routes,Javascript,Angularjs,Routes,在AngularJS路由中,我知道星号(*)可以匹配带斜线的路径,问号(?)可以匹配可选路径,但如何组合它们呢?我想将/admin/tasks和/admin/tasks/arbitral/path/with/slashes匹配在一起 我试过这个: $routeProvider.when('/admin/tasks/:path*?', { templateUrl: './templates/admin/task.html', controller: 'Adm
/admin/tasks
和/admin/tasks/arbitral/path/with/slashes
匹配在一起
我试过这个:
$routeProvider.when('/admin/tasks/:path*?', {
templateUrl: './templates/admin/task.html',
controller: 'AdminTaskController'
})
它可以将/admin/tasks/
和/admin/tasks/arbitral/path/与/slashes
匹配,但不能与/admin/tasks
匹配。这很奇怪,因为上面写着:
路由路径(与$location.path
匹配)。如果$location.path
包含多余的尾随斜杠或缺少尾随斜杠,则路由仍将匹配,$location.path
将被更新,以添加或删除尾随斜杠以完全匹配路由定义
为什么路由不能匹配没有尾部斜杠的URL
此外,在文件中
路径
可以包含带有问号的可选命名组:例如:name?
但实际上单独使用
?
无法将路径与斜杠匹配。我通过复制解决了这个问题。这并不理想,但很有效:
.when('/system/:path?',{
templateUrl:'assets/templates/pages/system.html',
controller: "SystemController",
controllerAs: "systemCtrl"
})
.when('/system/:path*',{
templateUrl:'assets/templates/pages/system.html',
controller: "SystemController",
controllerAs: "systemCtrl"
});
现在当人们输入http://localhost/system/files/15/delete
它可以识别它,如果他们只是转到http://localhost/system