Вам может понадобиться нарисовать другой маршрут, который также включает в себя '?' и восклицательный знак для псевдо-URL-параметров. Например, это функция, с помощью которой вы можете расширить Router, которая будет проходить через ваш маршрутный объект и рисовать дополнительный маршрут для каждого со строкой запроса. Он также проанализирует параметры URL и передаст их в качестве последнего аргумента методу маршрута.
mapRoutesWithParams: function() {
_.each(_.keys(this.routes), function(route) {
this.route(route+'?*params', // draw the route with a query string
this.routes[route],
function() {
var args = _.toArray(arguments);
var params = args.pop();
var paramsObject = _(params.split('&')).reduce(function(memo, pair) {
memo[pair.split('=')[0]] = pair.split('=')[1]; return memo;
}, {});
return this[this.routes[route]].apply(this, args.concat(paramsObject));
}
);
}, this);
}