vue项目中封装element-ui中的弹窗组件

本文介绍了如何在Vue中封装一个对话框组件,包括使用`el-dialog`创建对话框,处理父子组件间的通信问题。通过设置`before-close`属性和监听`dialogVisible`的值来确保正确同步状态。在父组件中调用子组件并传递`dialogVisible`,实现了弹窗的显示与关闭,并在确认按钮点击时向父组件传递值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前因为项目需要,所以需要封装一个dialog对话框

子组件代码如下:

<template>
  <el-dialog
    title="提示"
    :visible.sync="vv"
    width="30%"
    :before-close="uu">
    <span>这是一段信息</span>
    <span slot="footer" class="dialog-footer">
        <el-button @click="vv = false">取 消</el-button>
        <el-button type="primary" @click="uu">确 定</el-button>
    </span>
    </el-dialog>
</template>

<script>
export default {
  data () {
    return {
      vv: false
    }
  },
  props: {
    dialogVisible: {
      type: Boolean,
      require: true
    }
  },
  watch: {
    dialogVisible (val) {
      this.vv = val
    }
  },
  methods: {
    uu () {
      this.vv = false
      this.$emit('bb', this.vv)
    }
  }
}
</script>

以上代码可以看到dialogVisible是父组件传过来的值,如果直接在子组件中进行修改,会出现报错,所以,换了一个变量,同时去监听dialogVisible,这样报错问题就解决了。同时在点击弹框的确认按钮时,要向父组件传值,改变dialogVisible的值

接下来是在父组件中引入子组件:

<template>
  <div>
      <el-button @click="hh">弹窗啊,出来吧</el-button>
      <pop-window-2 :dialogVisible="gg" @bb="mm"></pop-window-2>
  </div>
</template>

<script>
export default {
  data () {
    return {
      gg: false
    }
  },
  methods: {
    mm (val) {
      this.gg = val
    },
    hh () {
      console.log(123)
      this.gg = true
    }
  }
}
</script>

上面只是做了最简单的封装,但是原理大致是这样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值