Marionette AppRouter Включить / Персонаж в параметрах маршрута

Как я могу сделать так, чтобы вышеперечисленное произошло? Например, если пользователь переходит по этому URL-адресу:

app.com/#search/test.com/index.html

с этим маршрутизатором, настроенным в контроллере, чтобы поймать его:

var searchRouter = new Marionette.AppRouter({
  controller: searchController,
  appRoutes: {
    'search': 'init',
    'search/:term': 'search'
  }
});

Как бы функция search передавалась term, включая / и все, что следует за ней? В моем текущем тестировании кажется, что этот маршрут вообще не вызывается, когда поисковый запрос содержит /.


person Bloodyaugust    schedule 30.09.2015    source источник


Ответы (1)


Сопоставление маршрутов иногда бывает трудным и может быть сложной задачей для отладки, у меня до сих пор было много проблем с этим.

Поэтому я хотел бы предложить вам кое-что еще:

Просто имейте 1 маршрут для покрытия обоих сценариев и маршрут к init или search внутри вашего слушателя:

appRoutes: {
  'search(/:term)': 'searchListener'
},

searchListener: function(term) {
  if (!term) this.init();
  else this.search(term);
}

Это больше просто для выражения идеи, не стесняйтесь делать ее лучше. Надеюсь, этот подход решит вашу проблему.

person Tiago Romero Garcia    schedule 01.10.2015