В Aurelia, как я могу заполнить модал (с представлением и привязкой), который живет в основном макете приложения (app) из представления, вызывая маршрутизатор?
Для целей этого примера я буду использовать некоторые гипотетические имена:
app
- Основной вид и viewmodels app.js и app.html моего приложения
projects
- Вид, к которому осуществляется переход с помощью маршрутизатора в приложении.
projects-new
- Вид, который будет заполнять модальные.
У дизайнера в моей команде есть бутстрап-модал, сидящий в app
, На projects
(Маршрут: /projects
), когда пользователь нажимает кнопку, это то, что мы хотим:
- Навигация маршрутизатора должна быть вызвана. URL должен теперь читать:
/projects/new
projects
загружает и связываетprojects-new
к модальному вapp
- Модал открывается.
- Пользователь либо отменяет (закрывает модальный), либо заполняет форму и нажимает "сохранить"
- Результат действия пользователя доступен в
projects
- так, может быть, объект события, который содержит действия пользователя, а также модель, которая была связана сprojects-new
(если они сохранены) отправляется сapp
где модальное существует, чтобыprojects
с помощьюaurelia-event-aggregator
,
Я начал по пути использования aurelia-event-aggregator
общаться между app
а также projects
но я остановился, когда понял, что понятия не имею, как будет работать привязка.
Я думаю, что другим приемлемым решением было бы создать модальный компонент, который обеспечивает эту функциональность, но не помещать его в app
, но стилистически имеет смысл быть выше в дереве DOM. Есть ли способ по существу сделать это? Есть компонент в представлении, которое каким-то образом подключается к DOM выше в дереве? Например:
<html>
<head><!-- Header stuff here --></head>
<body>
<app>
<stuff></stuff>
<!-- This is where the view is rendered -->
<router-view></router-view>
<!-- This is where the modal component would theoretically attach from projects view-->
<modal></modal>
</app>
</body>
</html>