Element UI中el-dialog作为子组件如何由父组件控制显示/隐藏~

news/2024/9/23 3:33:26/

1、这里介绍的是将el-dialog作为组件封装便于复用,如何通过父组件控制子组件dialog的显示与隐藏。

2、思路:首先el-dialog是通过dialogVisible的值是否为true或false来控制显示与隐藏的。那么我们可以通过父传子props来将true(即showFlag的值)传递给dialog子组件,然后在子组件中监听showFlag值的变化,一旦出现变化就将showFlag的值赋值给dialogVisible,以此来实现dialog组件的显示。

如何控制隐藏呢?或者说如何实现二次点击显示?

思路:首先我们通过子传父$emit传递一个自定义事件hiddenFlag给父组件,然后在父组件中触发该方法,将showFlag的值变为false即可。

3、还有一种方法就是通过给子组件添加v-if来控制,根据个人爱好来选择吧。

4、封装dialog子组件。

<template><el-dialogtitle="添加商品":visible.sync="dialogVisible"width="40%":before-close="handleClose"style="text-align: center; line-height: 20px"><el-form:model="ruleForm":rules="rules"ref="ruleForm"label-width="100px"class="demo-ruleForm"><el-form-item label="活动名称" prop="newName"><el-input v-model="ruleForm.newName"></el-input></el-form-item><el-form-item label="活动日期" required><el-form-item prop="newData"><el-date-pickertype="date"placeholder="选择活动日期"v-model="ruleForm.newData"style="width: 100%"></el-date-picker></el-form-item></el-form-item><el-form-item label="活动地址" prop="newAddress"><el-input v-model="ruleForm.newAddress"></el-input></el-form-item><el-form-item label="爱好" prop="newLikes"><el-input v-model="ruleForm.newLikes"></el-input></el-form-item></el-form><span slot="footer" class="dialog-footer"><el-button @click="Cancel()">取 消</el-button><el-button type="primary" @click="determine()">确 定</el-button></span></el-dialog>
</template>
<script>
export default {name: "diaLog",data() {return {dialogVisible: false,ruleForm: {newName: "",newAddress: "",newData: "",newLikes: "",},rules: {newName: [{ required: true, message: "请输入活动名称", trigger: "blur" },],newAddress: [{ required: true, message: "请选择活动区域", trigger: "blur" },],newData: [{type: "date",required: true,message: "请选择日期",trigger: "change",},],newLikes: [{ required: true, message: "请输入爱好", trigger: "blur" }],},};},props: ["showFlag"],watch: {// 监听父组件传递过来的showFlag的变化,控制dialog的显示showFlag() {this.dialogVisible = this.showFlag;},},methods: {// 关闭弹窗handleClose(done) {done();this.$emit("hiddenFlag");},//   取消Cancel() {this.$emit("hiddenFlag");},//   确定determine() {this.$emit("hiddenFlag");},},
};
</script><style></style>

5、使用子组件。

<template><div><el-button type="primary" @click="addGoods()">添加商品</el-button><!-- 对话框 --><diaLog :showFlag="showFlag" @hiddenFlag="hidden()"></diaLog></div>
</template><script>
import diaLog from "../components/dialog.vue";
export default {name: "newUser",data() {return {showFlag: false,};},components: {diaLog,},methods: {// 添加商品addGoods() {// 展示弹窗this.showFlag = true;},// 接收dialog组件传递过来的隐藏弹窗信息hidden() {this.showFlag = false;}},
};
</script><style></style>

效果图:


http://www.ppmy.cn/news/1510626.html

相关文章

squeeze()和unsequeeze()函数的作用

sequeeze(dim):用于在指定位置添加一个大小为1的新维度 例如&#xff1a; 其他的大家自行尝试&#xff01; squeeze()&#xff1a;squeeze函数用于去除张量中所有大小为1的维度,注意当没有传入任何参数的时候&#xff0c;去掉的是所有大小为1的维度。 例如&#xff1a;

【leetcode】相交链表-25-1

方法&#xff1a;遍历 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {…

Element-03.组件-Pagination分页

一.常见组件-分页-属性 参数&#xff1a;background 说明&#xff1a;是否为分页按钮添加背景色 类型&#xff1a;boolean 有background即添加&#xff0c;没有则不添加 参数&#xff1a;layout 说明&#xff1a;组件布局&#xff0c;子组件名用逗号分隔 类型&#x…

Swift依赖注入:解锁代码解耦与测试的大门

标题&#xff1a;Swift依赖注入&#xff1a;解锁代码解耦与测试的大门 引言 在Swift开发中&#xff0c;依赖注入&#xff08;DI&#xff09;是一种关键技术&#xff0c;用于实现代码的解耦和提高可测试性。通过将依赖项从外部传入&#xff0c;而不是让对象自己创建或查找其依…

Java Stream API详解:高效处理集合数据的新方式

引言 随着Java 8的发布&#xff0c;Stream API成为了Java开发人员手中的强大工具&#xff0c;它极大地简化了集合数据的操作&#xff0c;使得代码更简洁、更易于理解。本文将深入探讨Stream API的基本概念、优势以及如何使用它来处理数据。 Stream API简介 Stream API是Java…

uniapp 生成二维码

一般常用到的二维码生成库&#xff0c;在使用的过程中&#xff0c;都需要设置到指定的dom元素上&#xff0c; 但是在 uniapp 项目中&#xff0c;想要像vue项目中一样&#xff0c;获取标签的dom元素是比较难操作的。所以在 uniapp 中生成二维码&#xff0c;就需要换一种思路&…

【网络】高并发场景处理:线程池和IO多路复用

文章目录 短时间内有大量的客户端的解决方案线程池IO 多路复用 短时间内有大量的客户端的解决方案 创建线程是比较经典的一种服务器开发模型&#xff0c;给每个客户端分配一个线程来提供服务 但一旦短时间内有大量的客户端&#xff0c;并且每个客户端请求都是很快的&#xff…

大语言模型(LLM)的SIO解构

引言: 大语言模型&#xff08;LLM&#xff09;作为现代人工智能领域的重要突破&#xff0c;已经在自然语言处理&#xff08;NLP&#xff09;中展现出了卓越的能力。这些模型通过深度学习算法和大规模数据训练&#xff0c;在多个语言任务中表现出接近人类的理解与生成能力&#…