我正在使用 Bootstrap-vue 和 b-modal 组件。我遇到的问题是背景事件,它关闭了我的模态,但也在包含 b-modal 的组件的容器上触发了 onClick 事件。
这是我在其中调用包含 modal 的自定义组件的容器:
<template>
<table>
<thead>
...
</thead>
<tbody v-for="(review, index) in reviews"
:key="review.review.rId"
@click="showReviewModal(review.review.rId)">
<custom-item :review="review"/>
</tbody>
</table>
</template>
...
methods: {
showReviewModal(id) {
this.$root.$emit('bv::show::modal', id);
}
},
在中间自定义组件中:
<template>
<tr>
<fv-review-modal :id="review.review.rId" :review="review"/>
</tr>
</template>
最后在包含 b-modal 的自定义组件中:
<template>
<b-modal :ref="id"
:id="id"
hide-header
hide-footer
:modal-class="['review-modal', 'review-modal__body']">
Bla bla bla</b-modal>
</template>
我可以禁用模式外的点击,但我想保留它:)。此外,我还考虑过对 bootstrap-vue 生成的 hide 事件做出反应,并防止默认行为手动关闭当前模式并避免生成 onClick 事件。我需要对其进行测试,但我不喜欢这种不雅的解决方案。
你知道如何解决这个问题吗?谢谢!
编辑:解决方案是:
<template>
<tr>
<fv-review-modal :id="review.review.rId" :review="review" @click.native.stop/>
</tr>
</template>