Вы можете использовать формат маршрута splat для определения универсального маршрута, например:
routes:
'list' : 'showListView'
'*path': 'defaultRoute'
defaultRoute: ->
...
Эти знаки могут соответствовать любому количеству компонентов URL.Так как тот, который приведен здесь, по существу, соответствует чему-либо, порядок, в котором определены маршруты, имеет значение.Более ранние правила, перечисленные в литерале routes
, имеют приоритет над более поздними. Таким образом, правило всеохватывающего списка должно быть указано последним.
Замечание по предупреждению : Механизм оператора for in
оставляетпорядок итерации ключей в объектах не указан ( ECMA-262 раздел 12.6.4 ):
Механизм и порядок перечисления свойств ... не указан.
Большинство браузеров, если не все с некоторыми ошибочными исключениями, будут выполнять итерацию в порядке определения.Если определенные маршруты имеют неоднозначность, правильное разрешение которой зависит от упорядочения (как в этом случае), и / или если явное упорядочение может быть предпочтительным из-за непредсказуемой среды, также возможно динамическое определение маршрутов в Router
.Инициализатор, а не декларативно / статически:
initialize: function () {
//router.route(route, name, [callback]);
this.route('*path', 'default', this.defaultRoute);
this.route('map', 'map', this.showMapView);
this.route('photos', 'photos', this.showPhotoView);
this.route('list', 'list', this.showListView);
}
В этом случае маршруты, определенные позже, переопределяют ранее определенные маршруты, поэтому порядок из более ранних значений меняется на обратный, чтобы сохранить то же поведение.