AngularJS Ui Router正则表达式匹配url中的通配符

时间:2014-04-17 11:31:42

标签: javascript regex angularjs url-routing angular-ui-router

我想知道这是否可行 - 我需要将以下网址与一种模式相匹配:

/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)。是我想做的事情吗?

1 个答案:

答案 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}"