У меня есть следующий маршрут в моем Backbone маршрутизаторе:Backbone маршрут _extractParameters захватывая дополнительный параметр нулевой
'surveys/:surveyId?:opts': 'SurveyList:Selected'
и следующий обработчик, который захватывает любой маршрут и переиздает его на автобусе сообщение для моих просмотров обращаться:
this.on('route', function() {
PubSub.publish(Events.RouteChanged, {
route: arguments[0],
options: arguments[1]
});
});
Когда маршрутизатор совпадает с маршрутом surveys/myTestId123?pageNum=2
, ожидаемое поведение является то, что arguments[1]
будет массив из 2-х аргументов: myTestId123
и pageNum=2
. Однако на самом деле это массив с тремя аргументами - двумя вышеупомянутыми и значением null
в качестве третьего. Я сузил это до метода _extractParameters
, который соответствует фрагменту url для регулярного выражения. В этом случае регулярное выражение равно /^surveys\/([^\/?]+)(?:\?([^\/?]+))?(?:\?([\s\S]*))?$/i
.
Интересно, что я получаю правильные параметры, когда маршрут surveys/:surveyId
, который в свою очередь производит это регулярное выражение: /^surveys\/([^\/?]+)(?:\?([\s\S]*))?$/i
.
Here is a fiddle showing the problem in action.
Является ли проблема с регулярным выражением, которое создает базовая линия из моего маршрута, или проблема с самим маршрутом?