首页 > 解决方案 > 使用带有斜杠变量的 routeprovider

问题描述

我已经定义了这个 url,/item/1231,但是可以使用带有斜杠的变量作为 itemID?

如果我的项目 ID 是 12/31,这怎么可能?是否必须将其编码为 %2F?

/项目/12/31

  $routeProvider.when('/item/:itemID', {
    templateUrl: 'item_view.html',
    controller: 'ItemControler'

从文档:

路由路径(与 $location.path 匹配)。如果 $location.path 包含多余的斜杠或缺少一个,则路由仍将匹配,并且 $location.path 将更新以添加或删除斜杠以与路由定义完全匹配。

path 可以包含以冒号开头的命名组:例如:name。当路由匹配时,直到下一个斜杠的所有字符都匹配并存储在给定名称下的 $routeParams 中。path 可以包含以冒号开头并以星号结尾的命名组:例如:name*。当路由匹配时,所有字符都急切地存储在给定名称下的 $routeParams 中。路径可以包含带有问号的可选命名组:例如:名称?。

例如,像 /color/:color/largecode/:largecode*/edit 这样的路由将匹配 /color/brown/largecode/code/with/slashes/edit 并提取:

颜色:棕色

大码:代码/带/斜杠。

https://docs.angularjs.org/api/ngRoute/provider/ $routeProvider

但我还没有成功

标签: angularjsroute-provider

解决方案


好吧,正如文档所说,它只需要添加和 * 以忽略斜杠。

 $routeProvider.when('/item/:itemID*', {
    templateUrl: 'item_view.html',
    controller: 'ItemControler'

推荐阅读