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

news/2025/3/28 6:43:46/文章来源:https://www.cnblogs.com/1399z3blog/p/18784740

组件:

<dialog-show :showParam="showParam" @closeShow="closeDetails" @formData="submitData" />methods: {closeDetails(){this.form={};// 在父组件关闭弹窗this.show=false;},submitData(data){// data 为 this.$emit('formData',this.form) 传出的值this.form=data;}
}
  • ':' 参数传递 父组件->子组件 props: ['showParam']
  • '@' 结果传递接收是方法 子组件->父组件 this.$emit('closeShow')---> 传递方法本身 this.$emit('formData',this.form)---> 传递值

使用vue的一个基本常识,父组件传递给子组件的数据,子组件通过props接受后,不能直接更改该值。这是因为:所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致你的应用的数据流向难以理解。以下为错误示例:

<template><child :showFlag="showFlag"></child>
</template><script>
export default {name: 'parent',props:[],data () {return {showFlag: false}}
}
</script>

子组件child.vue:

<template><el-dialog title="子组件弹出框" :visible.sync="showFlag"></el-dialog>
</template>
<script>
export default {name: 'child',props: {showFlag: {type: Boolean}}
}
</script>

实际测试,浏览器不会报错,但是会给出提示,但是程序可能会出现难以预料的bug。

解决办法

父级组件parent.vue:

<template><!-- 按钮,点击设置showFlag为true,即打开弹出框 --><el-button @click="showFlag = true"></el-button><!-- 将showFlag传递给子组件 --><child :showFlag="showFlag" @closeChildDialog="closeChildDialog"></child>
</template><script>
export default {name: 'parent',props:[],data () {return {showFlag: false}},methods: {/*** 接受子组件调用的关闭弹出框方法*/closeChildDialog () {this.showFlag = false}}
}
</script>

子组件child.vue:

<template><el-dialog title="子组件弹出框" :visible.sync="dialogVisible" @close="closeDialog"><div slot="footer"><el-button @click="closeDialog">取 消</el-button><el-button type="primary" @click="closeDialog">确 定</el-button></div></el-dialog>
</template>
<script>
export default {name: 'child',props: {// 接受父级组件的显示标记,用于被watchshowFlag: {type: Boolean}},data () {return {// 子组件自己的显示标记,用于真正切换dialog的显示/隐藏dialogVisible: false}},methods: {/*** 关闭弹出框事件,触发父级组件的closeChildDialog方法*/closeDialog () {this.$emit('closeChildDialog')}},watch: {// 观察父级组件的showFlag,并将showFlag的最新值设置给dialogVisibleshowFlag (newVal, oldVal) {this.dialogVisible = newVal}}
}
</script>

源文章地址:
https://blog.csdn.net/masonqiang/article/details/115673625

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

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

相关文章

TEA与XTEA算法:

TEA算法使用64位的明文分组和128位的密钥,它使用Feistel分组加密框架,需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 - 1…

ui中的控件stackwidget如何拖拽添加widget

QStackedWidget界面的操作步骤-百度经验

UPX加壳原理,加壳及去壳:

加壳: 先写一个简单的代码:生成text.exe文件,然后把这个文件放到与upx同一个文件夹里: 输入指令./upx text.exe 即可加壳 使用IDA打开,可以明显发现被upx加壳了,其大小也由原来的55kb压缩到42KB: 去壳: 工具去壳: 使用指令./upx -d text.exe即可脱壳大小也变回去了,用…

vscode remote ssh内存异常占用高问题

参考:https://blog.csdn.net/sigmarising/article/details/107615035 点开设置搜索search.follow。在用户/远程/工作区都取消勾选Follow Symlinks,如图所示。

Hook(钩子技术)

一.介绍 1.当代码执行到某行时,获取寄存器值和内存里的值,进行调试分析,例如hook明文包. 2.当代码执行到某行时,插入想执行的代码.例如迅雷拦截发包函数. 3.当代码执行到某行时,修改寄存器,达到某些篡改目的. 拿FishingKit这道题举例就是本来运行流程是: a--->b 而使用了H…

2024年1月Java项目开发指南20:windows下使用Nignx部署应用

命令 启动start nginx重新加载配置文件 nginx -s reload nginx -t修改配置后执行上面两个语句下载地址 https://nginx.org/en/download.html 部署Vue项目 1 打包Vue项目 得到dist文件件 2 启动Nginx,访问localhost 注意:Nginx需要占用80端口。 启动后访问localhost,成功后如…

Z3-solve 求解器(SMT求解器)解方程:

Int(name, ctx=None),创建一个整数变量,name是名字 Ints (names, ctx=None),创建多个整数变量,names是空格分隔名字 IntVal (val, ctx=None),创建一个整数常量,有初始值,没名字。 对于实数类型的API与整数类型一致,向量(BitVec)则稍有区别: Bitvec(name,bv,ctx=None),…

CSS 如何设置父元素的透明度而不影响子元素的透明度

CSS 如何设置父元素的透明度而不影响子元素的透明度CSS 如何设置父元素的透明度而不影响子元素的透明度 在 CSS 中,设置父元素的透明度(如通过 opacity 属性)会影响所有子元素的透明度,因为 opacity 是作用于整个元素及其内容的。如果想让父元素透明但不影响子元素的透明度…

ASE20N40-ASEMI工业电源专用ASE20N40

ASE20N40-ASEMI工业电源专用ASE20N40编辑:LL ASE20N40-ASEMI工业电源专用ASE20N40 型号:ASE20N40 品牌:ASEMI 封装:TO-220 最大漏源电流:20A 漏源击穿电压:400V 批号:最新 RDS(ON)Max:216mΩ 引脚数量:3 沟道类型:N沟道MOS管 封装尺寸:如图 特性:MOS管、N沟道MO…

GreatSQL 为何选择全表扫描而不选索引

GreatSQL 为何选择全表扫描而不选索引 1. 问题背景 在生产环境中,发现某些查询即使有索引,也没有使用索引,反而选择了全表扫描。这种现象的根本原因在于优化器评估索引扫描的成本时,认为使用索引的成本高于全表扫描。 2. 场景复现 2.1 环境信息机器 IP:192.168.137.120 Gr…

Profibus DP转EtherCAT实例展示欧姆龙PLC对接西门子变频器操作

一. 案例背景 在一个小型工厂,现场设备需求是Profibus DP转EtherCAT,两端设备分别是西门子变频器和欧姆龙PLC通讯,。为提高现场的工作效率,采纳捷米特JM-DPM-ECT网关模块来实现数据的互联互通。二.设备介绍 1.欧姆龙PLC 欧姆龙PLC是一种功能完善的紧凑型PLC,能为业界领先的…

bayaim-如何保证Redis中的数据都是热点数据?

——————————————————————————————————————————————————— ---- bayaim,申明:本文摘自:https://mp.weixin.qq.com/s?__biz=MzAwNDUxOTQ5MQ==&mid=2247623691&idx=1&sn=35e1b6e9206458f9fcd99e48bebccc13&…