Хочу сделать компонент-обертку для модальных окон. В модальное окно вставляется компонент-форма через slot. Форма умеет порождать события "cancel" и "success", по которым надо закрывать окно. Само окно порождает событие "close". Сейчас получается примерно так:
<a @click="showModal = true">открыть форму</a>
<Modal v-if="showModal" @close="showModal = false">
<Form @success="showModal = false" />
</Modal>
Компонент Modal устроен примерно так:
<div class="modal">
<div class="modal__overlay"></div>
<div class="modal__body">
<slot />
</div>
</div>
Можно ли сделать, чтобы компонент Modal сам слушал события, которые эмитят компоненты, добавленные в slot?
Мысль первая - добавить обработчик прямо на слот:
<slot @success="close()" />
Но не работает -
есть ишью об этом, Эван идею запорол =) Но дело было год назад, может чего придумали за это время?
Мысль вторая - протаскивать событие через DOM, но это какое-то джейквири-программирование =)
Мысль третья - мне вообще не нравится вот это ручное оборачивание. Было бы круто вызывать так:
<Form modal="true" />
Понятно, что это идеологически плохо, но для моей задачи хорошо. И интересно, как вообще это решается - видимо, нужен миксин, но что в нем писать я пока не понимаю =)
Готовые модалки на ву посмотрел, похожего не нашел, может тоже кто видел?
UPD: А кстати, есть еще
динамические компоненты, есть смысл в эту сторону копать?