4

我正在尝试通过以下代码片段在 Angular js 中执行通配符 (*) 路由:

$routeProvider.when('/something/:action/:id/:params*\/', {

  templateUrl : "/js/angular/views/sample/index.html",

  controller : 'SampleCtrl'

}).otherwise({

  redirectTo: '/something/all' //This exists in real code

});

示例路径:/#/something/details/201/1

在调用此 url 时,它会执行 else 方法。我在这里做错了什么?提前致谢

4

3 回答 3

6

$routeProvider不支持标准正则表达式,但它支持命名组

  • path 可以包含以冒号 (:name) 开头的命名组。当路由匹配时,直到下一个斜杠的所有字符都匹配并存储在给定名称下的 $routeParams 中。

  • path 可以包含以星号 (*name) 开头的命名组。当路由匹配时,所有字符都急切地存储在给定名称下的 $routeParams 中。

所以你应该试试

$routeProvider.when('/something/:action/:id/:params/*rest'

这将匹配/#/something/details/201/1/whatever/you/say

于 2013-09-04T12:57:27.013 回答
2

据我所知,angularjs 不支持正则表达式。您应该查看 angular ui-router。

https://github.com/angular-ui/ui-router

于 2013-09-04T09:01:25.430 回答
0

您可以使用

$routeProvider.when('/something/:action/:id/:params?,
于 2015-09-11T00:08:28.020 回答