我试图通过以下代码片段在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时,它会执行其他方法。我在这做错了什么? 提前致谢
答案 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。
答案 2 :(得分:0)
你可以使用
$routeProvider.when('/something/:action/:id/:params?,