如何使用Backbone.Router与URL,包含空格或圆括号?

时间:2015-02-18 19:31:01

标签: javascript regex backbone.js marionette

默认Backbone.Router实现工作不正确,例如路由器不处理此URL: http://localhost:8080/cmp/campaigns/20416/files/wondertag10(1).xls/info

但是这个网址正常: http://localhost:8080/cmp/campaigns/20416/files/wondertag10.xls/info


路由器代码:

var fileInfo = function (id, filename) {
    App.screenBody.show(App.CMP.FileInfo.Main.get({
        id: id,
        fileName: filename
    }));
};

'cmp/campaigns/:id/files/:filename/info': 'fileInfo'

我认为,这是由于使用骨干库的正则表达式。我该如何解决?

1 个答案:

答案 0 :(得分:0)

您不能在路由器对象中使用正则表达式,但可以在路由器的初始化函数中设置它们,例如:

initialize: function () {
    this.route(/cmp\/campaigns\/(\d+)\/files\/([a-z(\d+)]+(.*))\/info/, 'search');
}

上述路由定义中的正则表达式将采用任何数字字符,第二个将采用以字符开头的字符串,包含括号括起的数字,并以任何其他字符结尾。这将导致包含和不包含括号的文件名。

查看此jsfiddle