У меня есть маленькая песочница здесь с двумя компонентами. Список объектов (например, «Группы») и модальное подтверждение. Модальный режим запускается при нажатии кнопки удаления. (Эта песочница извлечена из другого поста , в котором я попросил разные способы отправить результат модального в родительский компонент, GroupList
).
Вот модальный компонент:
<template>
<b-modal
id="modalConfirmation"
title="Confirmation"
ok-variant="danger"
@cancel="resolvePromise(false)"
@ok="resolvePromise(true)"
@close="resolvePromise(false)"
>Are you sure you want to delete this row ?</b-modal>
</template>
<script>
export default {
name: "ModalConfirmation",
data() {
return {
group: null,
resolvePromise: null,
rejectPromise: null
};
},
methods: {
show(group) {
return new Promise((resolve, reject) => {
this.group = group;
this.$bvModal.show("modalConfirmation");
this.resolvePromise = resolve;
this.rejectPromise = reject;
});
}
}
};
</script>
Лучшим решением для меня было это. Однако, хотя я понимаю принцип обещаний JavaScript, я не мог понять, как это работает в этом случае. Он отлично работает, но мне не нравится использовать код, который я не понимаю.
В теге ModalConfirmation
для тега b-modal
это событие, которое устанавливает результат модального , Но как vuejs / bootstrap - vue сделать соответствие между этим и обещанием?
@ok="resolvePromise(true)"
@cancel="resolvePromise(false)"
@close="resolvePromise(false)"
Поскольку конструктор обещания вызывается, когда показывается модал, и это все ...
Более того, если я прокомментирую это
resolvePromise: null,
rejectPromise: null
в модальном компоненте, он все еще работает. Может ли кто-нибудь объяснить мне последовательность выполнения обещаний в этом случае?