用v-model控制el-dialog弹框

文章介绍了在ElementUI组件库中,如何利用v-model进行el-dialog弹窗的二次封装和控制显示隐藏。在父组件中通过v-model绑定数据,子组件接收并处理关闭事件,实现简洁的父子组件通信方式。

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

        element组件库中推荐用:visible.sync="dialogVisible"

        如果想要对el-dialog组件进行二次封装只是控制弹框显示和隐藏可以使用v-model进行数据绑定,代码量更少

        父组件中

<template>
  <div id="app">
    <el-button>控制弹窗</el-button>
<ShowDialog v-model="isShow"></ShowDialog>
</div>
</template>
<script>
import ShowDialog from "@/components/HelloWorld.vue";

export default {
 components: { ShowDialog },
  data() {
    return {
      isShow: false,
    };
  }
 
};
</script>

子组件

<template>
  <el-dialog :visible="value" width="30%" @close="handleClose" class="home">
   
  </el-dialog>
</template>
<script>
export default {
  
  props: {
    value: {
      required: true,
      type: Boolean,
    },
  },
  methods: {
    handleClose() {
      this.$emit("input", false);
    },
   
  },
};
</script>

v-model是一个语法糖 等同于 :value="isShow" @input="isShow =$event.target.value"

<!-- 添加用户--> <el-dialog :title="title" v-model="openAddUser" width="90%" append-to-body fullscreen> <el-form :model="queryEmp" ref="queryDetRef" :inline="true" label-width="150px"> <el-form-item label="用户" prop="EMP_NAME_"> <el-input v-model="queryEmp.EMP_NAME_" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter="handleQueryEmp" /> </el-form-item> <el-form-item> <el-button type="primary" icon="Search" @click="handleQueryEmp">搜索</el-button> <el-button icon="Refresh" @click="resetQueryDet">重置</el-button> </el-form-item> </el-form> <!-- 使用 el-row 和 el-col 实现左右布局 --> <el-row :gutter="20"> <!-- 左侧表格 --> <el-col :span="12"> <el-card> <el-table v-loading="loading" :data="empListLeft"> <el-table-column type="selection" width="50" align="center"/> <el-table-column label="用户编号" align="center" key="EMP_ID_" prop="EMP_CODE_"/> <el-table-column label="用户名称" align="center" key="userName" prop="EMP_NAME_"/> <el-table-column label="机构名称" align="center" key="ORG_NAME_" prop="ORG_NAME_"/> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button link type="primary" @click="handleAddEmp(scope.row)">添加</el-button> </template> </el-table-column> </el-table> </el-card> </el-col> <!-- 右侧表格 --> <el-col :span="12"> <el-card> <el-table v-loading="loading" :data="empListRight"> <el-table-column type="selection" width="50" align="center"/> <el-table-column label="用户编号" align="center" key="EMP_ID_" prop="EMP_CODE_"/> <el-table-column label="用户名称" align="center" key="
最新发布
03-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值