Магистральная маршрутизация с произвольным текстом

У меня есть страница, перенаправляемая с внешней на основную кодовую базу. Он имеет два параметра:

  • ID: целое число
  • КОД: случайная печатная строка ascii (без #, & или ?, но может включать - и всегда включает /)

Не уверен, что параметр CODE закодирован в % или нет. Думаю, я смогу заставить их контролировать это, если потребуется. Но проблема на данный момент только соответствие.

Я программист по обслуживанию, а не мое приложение изначально, поэтому просто пытаюсь сделать код, который «подходит».

Большинство существующих маршрутов используют только один идентификатор. например

"account-edit-:accountId"    : "accountEditRoute"

Но как мне передать два моих параметра в мой маршрут процесса. Я пытался:

"process-:id-:code"    : "processCode"
"process-[^-]*-:code"  : "processCode"
"process-:id/:code"    : "processCode"
"process-:id/*"        : "processCode"

И мой обработчик кода выглядит так:

processCode: function(id, code) {
...
}

Я всегда получаю обработчик неизвестного маршрута. Итак, как я могу соответствовать вышеизложенному.

Извините, если это глупый вопрос, но они (мудро) обычно не подпускают меня к переднему концу, так что все это очень ново для меня.


person Sodved    schedule 02.12.2019    source источник
comment
Поэтому я обошел это, заставив вызывающую страницу %кодировать параметр CODE при перенаправлении. Затем я декодирую его методом processCode. Оставлю вопрос открытым на случай, если есть способ сделать это в самой таблице маршрутизации, но теперь есть рабочий обходной путь   -  person Sodved    schedule 02.12.2019


Ответы (1)


Я считаю, что вы должны сделать это, используя параметр Router-route с регулярным выражением. Хэш маршрутов может соответствовать только простым шаблонам.

Вручную создайте маршрут для маршрутизатора. Аргумент маршрута может быть строкой маршрутизации или регулярным выражением. Каждый соответствующий захват из маршрута или регулярного выражения будет передан в качестве аргумента обратного вызова.

initialize: function(options) {

 // Matches #page/10, passing "10"
  this.route("page/:number", "page", function(number){ ... });

 // Matches /117-a/b/c/open, passing "117-a/b/c" to this.open
 this.route(/^(.*?)\/open$/, "open");

},

open: function(id) { ... }
person T J    schedule 06.12.2019