默认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'
我认为,这是由于使用骨干库的正则表达式。我该如何解决?
答案 0 :(得分:0)
您不能在路由器对象中使用正则表达式,但可以在路由器的初始化函数中设置它们,例如:
initialize: function () {
this.route(/cmp\/campaigns\/(\d+)\/files\/([a-z(\d+)]+(.*))\/info/, 'search');
}
上述路由定义中的正则表达式将采用任何数字字符,第二个将采用以字符开头的字符串,包含括号括起的数字,并以任何其他字符结尾。这将导致包含和不包含括号的文件名。
查看此jsfiddle。