AngularJS使路线不敏感?

时间:2014-02-25 16:34:23

标签: javascript regex angularjs

我知道在Backbone.js中我可以使用像这样的正则表达式

_routeToRegExp: function (route) {
    route = route.replace(this.escapeRegExp, "\\$&")
           .replace(this.namedParam, "([^\/]*)")
           .replace(this.splatParam, "(.*?)");

    return new RegExp('^' + route + '$', 'i'); // Just add the 'i'
}

使路线不敏感而/product/Product相同,与/PRODUCT相同

虽然我试图弄清楚如何在Angular.js中做同样的事情,但我遇到了一个问题,在应用程序内部执行此操作的最佳方式是什么,而不是使用htaccess重写等一揽子方法?感谢

2 个答案:

答案 0 :(得分:3)

尝试这样的事情:

var testApp = angular.module('testApp', ['ngRoute'])
.config(function ($routeProvider) {
   $routeProvider.when('/newEvent',
        {
            templateUrl: 'templates/NewEvent.html',
            controller: 'EditEventController',
            caseInsensitiveMatch: true
        });

where caseInsensitiveMatch:true表示/ product == / Product; caseInsensitiveMatch:false表示/ product<> /产品

答案 1 :(得分:1)

我会使用ui-router。它比Angular的内置路由器更先进,并允许您定义正则表达式。它还允许你定义子视图等。还有一个内置的重定向功能,所以你可以做一些类似psuedocode:$urlRouterProvider.when(anything, convertolowercase);的全局方法,虽然我还没有测试它,它也支持正则表达式。