VUE 父组件调用子组件弹窗

Posted shuaichao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VUE 父组件调用子组件弹窗相关的知识,希望对你有一定的参考价值。

想搞一个新增编辑弹窗,和列表页面分开

先来一个父组件调用子组件弹窗的demo

父组件

<template>
    <div>
        <el-button @click="show">按钮</el-button>
        
        <!-- 新增编辑弹框子组件 -->
        <add-or-update :addOrUpdateVisible="addOrUpdateVisible" @changeShow="showAddOrUpdate" ref="addOrUpdateRef"></add-or-update>
    </div>
</template>

<script>
// 引入子组件
import AddOrUpdate from ./Edit
export default {
    data(){
        return{
            // 控制新增编辑弹窗的显示与隐藏
            addOrUpdateVisible: false
        }
    },
    // 使用子组件
    components:{
        AddOrUpdate
    },
    methods:{
        // 按钮点击事件 显示新增编辑弹窗组件
        show(){
            this.addOrUpdateVisible = true
        },
        // 监听 子组件弹窗关闭后触发,有子组件调用
        showAddOrUpdate(data){
            if(data === false){
                this.addOrUpdateVisible = false
            }else{
                this.addOrUpdateVisible = true
            }
        }
    }
}
</script>

子组件:

<template>
    <el-dialog
        title="提示"
        :visible.sync="showDialog"
        width="50%"
        @close="handleClose">

        <span>这是一段信息</span>
        <span slot="footer" class="dialog-footer">
            <el-button @click="showDialog = false">取 消</el-button>
            <el-button type="primary" @click="showDialog = false">确 定</el-button>
        </span>

    </el-dialog>
</template>

<script>
export default {    
    // 接受父组件传递的值
    props:{
        addOrUpdateVisible:{
            type: Boolean,         
            default: false
        }
    },
    data(){
        return{
            // 控制弹出框显示隐藏
            showDialog:false
        }
    },
    methods:{
        // 弹出框关闭后触发
        handleClose(){
            // 子组件调用父组件方法,并传递参数
            this.$emit(changeShow,false)
        }
    },
    watch:{
        // 监听 addOrUpdateVisible 改变
        addOrUpdateVisible(oldVal,newVal){
            this.showDialog = this.addOrUpdateVisible
        },
    }
}
</script>

<style lang="less" scoped>

</style>

 

以上是关于VUE 父组件调用子组件弹窗的主要内容,如果未能解决你的问题,请参考以下文章

Vue 之 父组件给子组件传参实现自定义弹窗组件

Vue 之 父组件给子组件的传参的另类方式实现自定义弹窗组件

vue中 $parent 的使用

Vue +父组件调用子组件方法 + 子组件回调父组件方法

Vue +父组件调用子组件方法 + 子组件回调父组件方法

vue 父组件调用子组件的方法,更改子组件的数据