Vue.js模态组件示例未关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js模态组件示例未关闭相关的知识,希望对你有一定的参考价值。

我正在尝试在我的项目中使用来自Vue.js网站示例的Modal Component Example。当我在my-project组件中使用模态组件时,它工作正常,但当我在header插槽中添加一个关闭按钮时,此按钮不起作用,它不会关闭模式,而footer中的默认按钮仍然工作良好。

模态组件:

<template>
    <transition name="modal">
        <div class="modal-mask">
        <div class="modal-wrapper">
            <div class="modal-container">

            <div class="modal-header">
                <slot name="header">
                default header
                </slot>
            </div>

            <div class="modal-body">
                <slot name="body">
                default body
                </slot>
            </div>

            <div class="modal-footer">
                <slot name="footer">
                default footer
                <button class="modal-default-button" @click="$emit('close')">
                    OK
                </button>
                </slot>
            </div>
            </div>
        </div>
        </div>
    </transition>
</template>

<script>
export default {
    props: {
        showMal: Boolean
    }
}
</script>

<style scoped>
    <!-- same as vuejs website modal component example -->
</style>

我怎么称呼它:

<template>
    <button id="show-modal" @click="showModal = true">Show Modal</button>
    <!-- use the modal component, pass in the prop -->
    <modal v-if="showModal" @close="showModal = false">
        <!--
        you can use custom content here to overwrite
        default content
        -->
        <div slot="header">
            <button class="modal-default-button" @click="$emit('close')">Close</button>
        </div>
    </modal>
</template>

<script>
export default {
    data () {
        return {
            showModal: false
        }
    }
</script>

我执行此代码有什么问题?

答案

由于这是在父母:

<template>
    <button id="show-modal" @click="showModal = true">Show Modal</button>
    <!-- use the modal component, pass in the prop -->
    <modal v-if="showModal" @close="showModal = false">
        <!--
        you can use custom content here to overwrite
        default content
        -->
        <div slot="header">
            <button class="modal-default-button" @click="$emit('close')">Close</button>
        </div>
    </modal>
</template>

这段代码:

<button class="modal-default-button" @click="$emit('close')">Close</button>

实际上让父母发出'close',而不是modal孩子。

因此,由于控制模态的属性是showModal,只需将其设置为false

<button class="modal-default-button" @click="showModal = false">Close</button>

但JSぇdぇ:z zxswい

以上是关于Vue.js模态组件示例未关闭的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 对话框/模态在父组件上关闭

无法打开/关闭带有父类组件和子功能组件的模态

Vue.js - 从孙插槽组件发射没有将 $emit 事件冒泡到父级

我该如何做模态对话框片段(代码在我关闭之前不会执行)

销毁父组件时,UIkit 模态元素不会从 DOM 中删除(Vue.js)

来自 Vue.js 的组件未加载到 Laravel 刀片中