VUE 父组件调用子组件弹窗

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>

👉👍

转载自https://www.cnblogs.com/shuaichao/p/12661312.html

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要解决Vue2组件调用组件弹窗弹不出来的问题,可以按照以下步骤进行: 1. 首先,确保你的组件组件中被正确引入。根据提供的代码,你可以看到在组件的`<template>`标签中使用了`<add-or-update>`标签来引入组件,所以这一步应该没有问题。 2. 然后,检查你的组件是否正确地接收了组件传递的值。根据提供的代码,你可以看到在组件的`props`中定义了`addOrUpdateVisible`属性来接收组件传入的值。确保这个属性的类型、默认值等设置正确。 3. 接下来,检查你的组件是否正确地触发了弹出框的显示。根据提供的代码,你可以看到在组件的`data`中定义了`showDialog`属性来控制弹出框的显示与隐藏。在组件的`methods`中的`handleClose`方法中,使用`this.$emit`来触发了名为`changeShow`的事件,并传递了参数`'false'`。确保这个事件被正确触发,并且组件中监听了这个事件。 4. 然后,检查你的组件是否正确地监听了组件的事件。根据提供的代码,你可以看到在组件的`<add-or-update>`标签中使用了`@changeShow`来监听组件触发的`changeShow`事件,并调用了`showAddOrUpdate`方法。在组件的`methods`中的`showAddOrUpdate`方法中,根据传递的参数来控制`addOrUpdateVisible`的值,从而实现弹出框的显示与隐藏。 5. 最后,确保你的组件中的按钮点击事件正确地触发了显示弹出框的方法。根据提供的代码,你可以看到在组件的`methods`中的`show`方法中,将`addOrUpdateVisible`设置为`true`来显示弹出框。确保这个方法被正确触发。 如果按照以上步骤进行检查和调试,应该能够解决组件调用组件弹窗弹不出来的问题。希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值