Backbone Js路由案例敏感性问题

时间:2014-11-10 13:38:24

标签: javascript backbone.js url-routing

我正在使用backbonejs路由器,似乎路由不适用于已配置的路由的相反情况。

    var AppRouter = Backbone.Router.extend({
    routes: {
        'project(/)(/index)': 'showProjects',
        'project/:id': 'showProjectEdit'
    }
});

适用于http://www.test.com:53895/project 但是当P为大写http://www.test.com:53895/Project

时不起作用

我使用的版本是1.1.2。请帮忙!

1 个答案:

答案 0 :(得分:1)

我们可以通过在backbonejs库中为_routeToRegExp函数的返回值添加'i'属性来使路由不区分大小写。

_routeToRegExp: function (route) {
      var namedParam    = /:\w+/g;
      var splatParam    = /\*\w+/g;
      var escapeRegExp  = /[-[\]{}()+?.,\\^$|#\s]/g;    

      route = route.replace(escapeRegExp, '\\$&')
                   .replace(namedParam, '([^\/]+\/?)')
                   .replace(splatParam, '(.*?)');

      return new RegExp('^' + route + '$');
      /*
       * Note: If you would like case insensitivity, 
       *       add the "i" attribute to the return
       * return new RegExp('^' + route + '$', 'i');
       */
}

https://github.com/jashkenas/backbone/issues/848

谢谢戴夫!