引导模式不显示 vue 3

bootsrap modal not showing vue 3

我使用 vue 3 和 bootsrap 5。

        <b-button @click="showModal" ref="btnShow">Open Modal</b-button>
        <b-modal ref="my-modal">
            <div class="d-block">Hello From My Modal!</div>
        </b-modal>






    export default {
        methods: {
            showModal() {
                this.$refs['my-modal'].show()
            },
        }
    }

当我可以使用帮助功能打开模态时,模态无法打开,但出现错误 concole:

 this.$refs.my-modal.show is not a function

如果我在 $root 上使用 Emitting 事件,window 也不会正常打开。

同样的错误:

<b-button id="show-btn" @click="$bvModal.show('bv-modal-example')">Open Modal</b-button>
<b-modal id="bv-modal-example" hide-footer> ff  </b-modal>

更新:

模态组件:

 <modal-form :formats="formats" :formatAttr =  "format">
    <template #open>
    <b-button  v-b-modal.my-modal >Добавить формат</b-button>

    </template>
  
  </modal-form>

其他成分

<template>
 
      
  <b-modal v-model="modalShow">
    <div class="d-block">Hello From My Modal!</div>
  </b-modal>
  <b-button  variant="outline-danger" block @click="hideModal">Close Me</b-button>

</template>
    

export default {
    data() {
        return {
            modalShow: false
        }
    },
    methods: {
        hideModal(){
             this.modalShow = false;
        },
         showModal(){
             this.modalShow = true;
        }
    }
}
    

这不起作用:

<slot  @click="showModal()" name="open"></slot>

如果我使用上面的示例class“modal-backdrop fade show”不删除并且没有项目可用

如果我使用插槽作为隐藏按钮,如何关闭模式?

在模式中,您设置了 id,而不是 ref。尝试改变它。

您可以使用 ref 和 v-model 来做到这一点:

<template>
  <b-button @click="modalShow = true">open</b-button>
      
  <b-modal v-model="modalShow">
    <div class="d-block">Hello From My Modal!</div>
  </b-modal>
</template>
    

export default {
    data() {
        return {
            modalShow: false
        }
    }
}

编辑:或打开函数:

<template>
  <b-button @click="open()">open</b-button>
      
  <b-modal v-model="modalShow">
    <div class="d-block">Hello From My Modal!</div>
  </b-modal>
</template>
    

export default {
    data() {
        return {
            modalShow: false
        }
    },
    methods: {
        open(){
             this.modalShow = true;
        }
    }
}

编辑:或具有切换功能

<template>
  <b-button @click="toggle()">{{modalShow ? "close" : "open"}}</b-button>
      
  <b-modal v-model="modalShow">
    <div class="d-block">Hello From My Modal!</div>
  </b-modal>
</template>
    

export default {
    data() {
        return {
            modalShow: false
        }
    },
    methods: {
        toggle(){
             this.modalShow = !this.modalShow;
        }
    }
}

或在模态内使用自己的 close 按钮:

<template>
  <b-button @click="open()">open</b-button>
      
  <b-modal v-model="modalShow">
    <div class="d-block">Hello From My Modal!</div>
    <button class="btn btn-danger" data-bs-dismiss="modal" @click="close()">close</button>
  </b-modal>
</template>
    

export default {
    data() {
        return {
            modalShow: false
        }
    },
    methods: {
        open(){
             this.modalShow = true;
        },
        close(){
          // do something on close
        }
    }
}