Ren*_*ade 4 javascript modal-dialog vuejs2 bootstrap-vue
我使用 Vue2 和 Boostrap-vue 来制作模态组件,这是代码
我通过了以下道具@backdrop="handleBackdrop"
<template>
<b-modal
    v-model="showModal"
    id="modal"
    @backdrop="handleBackdrop"
    @ok="handleBackdrop"
  >
...
</template>
<script>
data() {
    return {
      showModal: false
     }
},
  methods: {
    show() {
      this.showModal = true;
    },
    hide() {
      this.showModal = false;
    },
    handleBackdrop(ev) {
      ev.preventDefault();
      console.log("Click backdrop");
    }
}
</script>
我正在使用这个@ok来测试函数handleBackdrop并且它可以工作,但是我无法激活背景上的这个点击
模态上没有任何backdrop事件,这就是为什么你没有看到任何事情发生。
您可以做的是观察hide包含trigger属性的事件。此触发器属性将包含触发隐藏事件的内容,包括backdrop是否单击了该事件。
https://bootstrap-vue.js.org/docs/components/modal/#prevent- opening
<template>
  <b-modal id="modal" @hide="onHide"></b-modal>
</template>
<script>
new Vue({
  el: '#app',
  methods: {
    onHide(evt) {
      if(evt.trigger === "backdrop"){
        evt.preventDefault();
        this.handleBackdrop();
      }
    },
    handleBackdrop() {
      console.log('Backdrop clicked')
    }
  }
})
</script>
如果您只是想在单击背景时防止模式关闭,您可以将 添加到no-close-on-backdrop模式中以防止这种行为。