Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 如何在AngularJS路由中匹配可选路由和未确定路由?_Javascript_Angularjs_Routes - Fatal编程技术网

Javascript 如何在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

在AngularJS路由中,我知道星号(*)可以匹配带斜线的路径,问号(?)可以匹配可选路径,但如何组合它们呢?我想将
/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