AngularJS路由案例敏感性

时间:2013-07-24 03:25:04

标签: javascript angularjs url-routing case-sensitive

我无法找到一个直截了当的答案,这让我相信它真的很简单。不管怎样,我走了。

我的$ routeProvider中的所有调用都运行良好,但区分大小写。这是一个代码示例:

config(function ($routeProvider) {
    $routeProvider.
        when('/', { controller: 'TmpCtrl', templateUrl: '/app/home.html' }).
        when('/foo', { controller: 'TmpCtrl', templateUrl: '/app/foo.html' }).  
        otherwise({ redirectTo: '/' });
});

我需要添加什么以便'/ Foo','/ fOO','/ FoO'等都重定向到同一路径?

2 个答案:

答案 0 :(得分:53)

您可以传递给$ routeProvider以切换区分大小写的选项:

config(function ($routeProvider) {
    $routeProvider.
        when('/', { controller: 'TmpCtrl', templateUrl: '/app/home.html' }).
        when('/foo', { controller: 'TmpCtrl', templateUrl: '/app/foo.html', caseInsensitiveMatch: true }).  
        otherwise({ redirectTo: '/' });
});

答案 1 :(得分:0)

使用config函数配置的路由默认情况下区分大小写。考虑下面的路线。请注意,路线(/ home)是小写字母。

$routeProvider
    .when("/home", {
        templateUrl: "Templates/home.html",
        controller: "homeController",
        controllerAs: "homeCtrl",
    })

如果我们在浏览器中键入以下URL,则会按预期看到home.html。 http://localhost:51983/home

如果键入以下URL,则将看到空白的布局页面。这是因为默认情况下,路由区分大小写 http://localhost:51983/HOME

如下所示,将路由不区分大小写的caseInsensitiveMatch属性设置为true。

$routeProvider
    .when("/home", {
        templateUrl: "Templates/home.html",
        controller: "homeController",
        controllerAs: "homeCtrl",
        caseInsensitiveMatch: true
    })

要使caseInsensitiveMatch上的所有路由都区分大小写,请设置$routeProvider属性,如下所示。

$routeProvider.caseInsensitiveMatch = true;