elementUI dialog 组件二次封装 before-close 回调函数作用

before-close 弹框关闭前的回调函数,父组件可以向子组件传递一个函数,用于修改子组件内的变量变量。应用场景如下:

1、封装 dialog 组件为 baseDialog,页面中使用 baseDialog 组件。

2、封装 dialog 组件为 baseDialog,子组件是一个 baseDialog+form 格式,将组件封装为 baseDialogForm,页面中使用 baseDialogForm

具体实现如下:

一、dialog 组件封装:

<template><el-dialogclass="base-dialog":visible.sync="visible"v-bind="$attrs"v-on="$listeners":before-close="beforeClose"><slot /><!-- 默认的 footer 挂载内容 --><div style="text-align: right" v-if="!$slots.footer"><el-button :type="okType" :loading="confirmLoading" @click="onOk">{{okText}}</el-button><el-button @click="onCancel">{{ cancelText }}</el-button></div><!-- 自定义 footer 挂载内容 --><div class="el-dialog__footer" v-if="$slots.footer"><slot name="footer"></slot></div></el-dialog>
</template><script>
export default {name: 'baseDialog',props: {// 显示/隐藏visible: {type: Boolean,default: false},// 确认按钮文字okText: {type: String,default: '确定'},// 确认按钮的类型okType: {type: String,default: 'primary'},// 取消按钮文字cancelText: {type: String,default: '取消'},// 确定按钮 loadingconfirmLoading: {type: Boolean,default: false}},methods: {// 确定onOk() {this.$emit('onOk');},// 取消onCancel() {this.$emit('update:visible', false);this.$emit('onCancel');},// 关闭前的回调beforeClose() {this.onCancel();}}
};
</script><style lang="scss" scoped>
.base-dialog {
}
</style>

 二、组件使用部分:

场景1:主页面使用 baseDialog 组件

<template><div><el-button @click="handleOpen">打开弹框</el-button><base-dialog :visible="visible" @onOk="onOk" @onCancel="onCancel">dialog...<!-- 自定义 footer 挂载内容 --><!-- <div slot="footer"><el-button type="primary">审核通过</el-button><el-button type="primary">审核拒绝</el-button><el-button>取消</el-button></div> --></base-dialog></div>
</template><script>
export default {name: 'demo',data() {return {visible: false};},methods: {handleOpen() {this.visible = true;},onOk() {this.visible = false;},onCancel() {this.visible = false;}}
};
</script>

场景2:将 baseDialog+form 封装为 baseDialogForm 组件

<template><base-dialogtitle="新增":visible.sync="dialogVisible"ok-text="提交"@onOk="handleConfirm"@onCancel="handleCancel"><el-form :inline="true" :model="formInline" class="demo-form-inline"><el-form-item label="审批人"><el-input v-model="formInline.user" placeholder="审批人"></el-input></el-form-item><el-form-item label="活动区域"><el-select v-model="formInline.region" placeholder="活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item></el-form><!-- 自定义 footer 挂载内容 --><!-- <div slot="footer"><el-button type="primary">审核通过</el-button><el-button type="primary">审核拒绝</el-button><el-button>取消</el-button></div> --></base-dialog>
</template><script>
export default {name: 'baseDialogForm',props: {visible: {type: Boolean,default: false}},data() {return {dialogVisible: this.visible,formInline: {user: '',region: ''}};},watch: {visible(newVal) {this.dialogVisible = newVal;}},methods: {// 确定handleConfirm() {this.$emit('update:visible', false);},// 取消handleCancel() {this.$emit('update:visible', false);},onSubmit() {console.log('submit!');}}
};
</script>

页面使用:

<template><div><el-button @click="handleOpen">打开弹框</el-button><base-dialog-form :visible.sync="visible" @onOk="onOk" @onCancel="onCancel">dialog...</base-dialog-form></div>
</template><script>
import BaseDialogForm from './components/baseDialogForm.vue';export default {name: 'demo',components: { BaseDialogForm },data() {return {visible: false};},methods: {handleOpen() {this.visible = true;},onOk() {this.visible = false;},onCancel() {this.visible = false;}}
};
</script>

简单总结:

针对于 baseDialog 组件的封装,之前为了更新子组件中的状态,通过使用在组件内部定义一个变量,接收父组件传递过来的 visible 属性实现双向绑定更新状态的效果,今天关注到了before-close 这个回调函数,很好用,使得基础组件的封装更加简洁,进而进行简单的分享与小结。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI和Anthropic在人工智能领域各自进行着不同的工作,以下是对它们工作内容的清晰归纳

OpenAI和Anthropic在人工智能领域各自进行着不同的工作&#xff0c;以下是对它们工作内容的清晰归纳&#xff1a; OpenAI&#xff1a; 公司背景与使命&#xff1a; 成立于2015年12月11日&#xff0c;总部位于美国旧金山。是一家由营利性公司OpenAI LP及非营利性母公司OpenAI …

ubuntu20.04部署gitlab流程

参考&#xff1a; https://blog.csdn.net/weixin_57025326/article/details/136048507 362 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.2.1-ce.0_amd64.deb/download.deb367 sudo apt install gitlab-ce…

初识Spring Boot:构建项目结构与组件解析

目录 前言 第一点&#xff1a;项目的结构 第二点&#xff1a;controller类的创建与使用&#xff08;构造器&#xff09; 第二点&#xff1a;service类的创建与使用&#xff08;逻辑层&#xff09; 第三点&#xff1a;Mapper类的创建与使用(数据操作) 总结 前言 在进行Sp…

【稳定检索】2024年心理学与现代化教育、媒体国际会议(PMEM 2024)

2024年心理学与现代化教育、媒体国际会议 2024 International Conference on Psychology and Modern Education and Media 【1】会议简介 2024年心理学与现代化教育、媒体国际会议即将召开&#xff0c;这是一场汇聚全球心理学、教育及媒体领域精英的学术盛宴。 本次会议将深入探…

目前最强的AI绘画工具 DALL-E、Stable Diffusion 和 Midjourney工具对比

大家好&#xff0c;我是AIGC的实践者SKY&#xff0c;今天和大家来聊聊DALL-E、Stable Diffusion和Midjourney。 随着人工智能技术的飞速发展&#xff0c;艺术生成工具如DALL-E、Stable Diffusion和Midjourney等&#xff0c;已经成为创意产业的新宠。这些工具利用深度学习算法&…

618适合入手哪些数码好物?实用数码好物清单分享,错过拍烂大腿!

在一年一度的618购物狂欢节里&#xff0c;许多数码爱好者们都在这次盛大的购物盛宴中觅得心仪的数码好物&#xff0c;数码产品不仅改变了我们的生活方式&#xff0c;更让我们享受到了前所未有的便捷和乐趣&#xff0c;那么在这个618&#xff0c;哪些数码好物值得我们入手呢&…

ER图介绍

在数据库设计和建模中&#xff0c;实体-关系图&#xff08;Entity-Relationship Diagram&#xff0c;简称ER图&#xff09;是一个至关重要的工具。ER图通过图形化的方式描述了现实世界中的实体&#xff08;Entity&#xff09;及其之间的关系&#xff08;Relationship&#xff0…

Java实战入门:深入解析Java中的`String.split`方法

文章目录 一、方法定义参数说明返回值 二、使用场景三、实现原理无限制分割限制分割 四、示例代码示例一&#xff1a;基本分割示例二&#xff1a;使用正则表达式分割示例三&#xff1a;限制分割次数示例四&#xff1a;保留空字符串 五、注意事项六、总结 在Java编程中&#xff…

oracle中的INTERVAL函数学习总结

Oracle 从9i数据库开始引入了一种新特性&#xff0c;可以用来存储时间间隔&#xff0c;出现了INTERVAL 函数。这个函数的表达式比较多&#xff0c;初学比较费劲不好掌握&#xff0c;经过以几个小时的查阅资料和实验&#xff0c;总结如下&#xff1a; interval year t…

python绘制北京汽车流量热力图:从原理到实践

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、热力图绘制原理 三、热力图绘制实践 1. 数据准备 2. 地图组件选择 3. 数据…

建WordPress主题官网模板

蓝色的中文WordPress企业模板 https://www.zhanyes.com/qiye/6305.html 暗红色WordPress律师事务所网站模板 https://www.zhanyes.com/qiye/23.html 红色大banner图WordPress外贸网站模板 https://www.zhanyes.com/waimao/27.html

显示器控制变频器编程软件:深入探索与实用指南

显示器控制变频器编程软件&#xff1a;深入探索与实用指南 在工业自动化日益发展的今天&#xff0c;显示器控制变频器编程软件以其高效、直观的特点&#xff0c;成为控制电机转速和工作模式的关键工具。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;对这一技术…

通过 CXCR4 靶向纳米线修补细胞表面以抑制癌症转移

引用信息 文 章&#xff1a;Cell surface patching via CXCR4-targeted nanothreads for cancer metastasis inhibition. 期 刊&#xff1a;Nature Communications&#xff08;影响因子&#xff1a;16.6&#xff09; 发表时间&#xff1a;2024/3/29 作 者&#xff1…

HttpSecurity 是如何组装过滤器链的

有小伙伴们问到这个问题&#xff0c;简单写篇文章和大伙聊一下。 一 SecurityFilterChain 首先大伙都知道&#xff0c;Spring Security 里边的一堆功能都是通过 Filter 来实现的&#xff0c;无论是认证、RememberMe Login、会话管理、CSRF 处理等等&#xff0c;各种功能都是通…

virtual cache基本概念

Virtual cache的引入 TLB只是加速了从虚拟地址到物理地址的转换,可以很快地得到所需要的数据(或指令)在物理内存中的位置,也就是得到了物理地址但是,如果直接从物理内存中取数据(或置指令),显然也是很慢的,因此可以使用在以前章节提到的Cache来缓存物理地址到数据的转换过程。实…

集成电路的引脚分布规律及识别

集成电路的引脚分布规律根据不同的封装方式而确定&#xff0c;引脚的序号和集成电路图中的编号是一一对应的&#xff0c;识别集成电路的引脚号对分析集成电路的内部框图和工作原理&#xff0c;以及排除集成电路的故障都具有重要的意义。 1.单列集成电路引脚的分布规律及识别 …

Python 点对点的ICP配准算法(同样适用于超大点云)

目录 一、ICP精配准1.1 算法概念1.2 算法流程二、代码示例三、结果示例本教程做了算法改进,使其同样适用于超大的点云数据的配准处理。 一、ICP精配准 1.1 算法概念 点云ICP配准(Iterative Closest Point Registration)是一种将两个或多个点云数据集对齐的算法。其工作原理…

区块链技术:金融行业的信任基石

一、引言 在数字化转型的浪潮中,区块链技术以其独特的优势,正逐渐成为金融行业的信任基石。本文将深入探讨区块链技术在金融行业的应用,通过具体案例的细化和完善,分析其特点和影响。 二、区块链技术的核心特点 1. 去中心化:区块链技术通过分布式账本,实现去中心化的数…

栈和队列题目练习

本节小编选了两道题来加深对栈和队列的认识理解&#xff01; 有效的括号 方法1&#xff1a;直接用栈的结构&#xff08;动态数组&#xff09; 本题可以用栈这个结构来解答&#xff0c;将(,{,[ 左括号压入栈中&#xff0c;然后取出栈顶元素与右括号),},]匹配。不匹配的话&…

【Qt】【模型视图架构】 在项目视图中启用拖放

文章目录 1. 在便捷类中启用拖放2. 在模型/视图类中启用拖放 模型/视图框架支持Qt的拖放应用。 列表、表格和树中的项目可以在视图中被拖拽&#xff0c;数据作为MIME编码的数据被导入和导出。标准视图可以自动支持内部的拖放。 默认视图的拖放功能并没有被启用&#xff0c;如果…