Обновление
Теперь вы можете подумать, как вы закроете свой модальный режим и сообщите об этом родительскому компоненту.
При нажатии кнопки триггера closeModal
для этого
Создайте метод - closeModal
и внутри компонента commonModal и emit
событие.
closeModal() {
this.$emit('close-modal')
}
Теперь это будет генерировать пользовательское событие, которое может прослушиваться потребляющим компонентом.
Так что в вашем родительском компоненте просто используйте это пользовательское событие, например, следующее и закройте ваш модальный
<main class="foo">
<commonModal v-show="isVisible" :data="data" @close- modal="isVisible = false"/>
<!-- Your further code -->
</main>
Так что по вашему вопросу
A - Как использовать модальное диалоговое окно вместо создания 3 отдельных диалогов
Создайте отдельный modal
компонент, скажем, - commonModal.vue
.
Теперь в вашем commonModal.vue
, примите один prop
, скажем, data: {}
.
Теперь в разделе html
commonModal
<div class="modal">
<!-- Use your received data here which get received from parent -->
<your modal code />
</div>
Теперь импортируйте commonModal
в потребительский / родительский компонент. Создайте свойство данных в родительском компоненте, скажем, - isVisible: false
и вычисляемое свойство для data
, которое вы хотите показать в modal
let скажем, modalContent
.
Теперь используйте это так
<main class="foo">
<commonModal v-show="isVisible" :data="data" />
<!-- Your further code -->
</main>
Вышеуказанное поможет вам повторно использовать модальный режим, и вам просто нужно отправить data
из родительского компонента.
Теперь второй вопрос также будет решен здесь Как узнать, какой модальный диалог был запущен?
Просто проверьте свойство isVisible
, чтобы проверить, открыт modal
или нет. Если isVisible = false
, то ваш модал не виден и наоборот