通配符*命名组(:name *)不使用$ routeProvider Angular js v1.0.6

时间:2013-09-04 07:10:59

标签: javascript angularjs routes

我试图通过以下代码片段在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时,它会执行其他方法。我在这做错了什么? 提前致谢

3 个答案:

答案 0 :(得分:6)

$routeProvider不支持标准regexp,但支持命名组

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

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

  •   

所以你应该试试

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

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

答案 1 :(得分:2)

据我所知,angularjs不支持正则表达式。 你应该看看角度ui-router。

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

答案 2 :(得分:0)

你可以使用

$routeProvider.when('/something/:action/:id/:params?,