Ember 3.15 (Octane)
Я пытаюсь создать следующие маршруты в своем приложении
/cars
/cars/:car_id
/cars/:car_id/:model_id
Первые два хороши, и я смог их создать использование ember-cli
ember g route cars
ember g route cars/car
Проблема с третьим состоит в том, что мне нужно, чтобы шаблон model
отображался под шаблоном cars
, ie. замените шаблон car
. Поэтому, если я добавлю {{outlet}}
в шаблон car
, шаблон model
будет отображен в нем нормально, но, очевидно, с этим {{outlet}}
ничего не произойдет, когда я перейду к /cars/5/2
Мой маршрутизатор выглядит вот так
Router.map(function() {
this.route('cars', function(){
this.route('car', { path: ':car_id'}, function() {
this.route('model', { path: ':model_id' });
});
});
});
Я пытался использовать индексный маршрут ember g route cars/car/index
, но проблема в том, что params
недоступны на маршруте index
и доступны только на car
route.
Как план b, я создал автомобильные и модельные маршруты в качестве маршрутов верхнего уровня ( на основе этого ответа ), но я бы хотел достичь вышеуказанного из-за несколько причин
- кажется более логичным ie, структурирование приложения на основе вложенности маршрутов
- У меня есть много вложенных маршрутов и я создаю их все, как маршруты первого уровня. становится трудно поддерживать
- ember неправильно применяет класс
active
с этой конфигурацией. Например, если у меня есть навигационная панель с Cars
в качестве ссылки, я бы хотел, чтобы она имела стиль active на всех трех страницах. Но это больше не работает, потому что второй маршрут будет называться как car
, а третий - как model
. - . Есть некоторые проблемы с URL, которые создаются по умолчанию с использованием
<LinkTo />
.
Так что, если у меня есть что-то подобное в моем car
шаблоне
<ul>
{{#each @model.models as |model|}}
<li><LinkTo @route="model" @model={{model}}> {{model.title}} </LinkTo></li>
{{/each}}
</ul>
Фактическая ссылка работает правильно, так как она выводит меня на нужную страницу модели, однако, URL отображается как /cars/undefined/undefined
. (Хотя это можно исправить, передав @models={{array @model.id model.id}}
, на данный момент это выглядит как обходной путь)