我想知道这是否可行 - 我需要将以下网址与一种模式相匹配:
/one/app/home
/one/two/app/home
/one/two/three/app/home
...
我知道AngularJS路由不支持正则表达式,但Angular UI Router支持正则表达式。
main.config(function($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise("/fail");
$stateProvider
.state("home", {
url: "{.+}/app/home",
templateUrl: "assets/tpl/home.html",
controller: "homeController"
})
$locationProvider.html5Mode(true);
});
虽然这不起作用(所有示例都转到/fail
)。是我想做的事情吗?
答案 0 :(得分:6)
您应该像这样使用它:
state("home", {
url: "/{beginPath:.+}{endPath:/app/home}",
templateUrl: "assets/tpl/home.html",
controller: "homeController"
});
然后,您将可以访问$stateParams.beginPath
(相当于 /app/home/
之前的evertyhing)和$stateParams.endPath
,这将等于 /app/home/
如果在开始时需要/one/
,那么请使用以下内容:
url: "/{beginPath:one/.+}{endPath:/app/home}"