问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ElementUIDialog对话框,vue组件之间传值

发布网友 发布时间:2024-09-30 16:43

我来回答

1个回答

热心网友 时间:2024-10-07 17:16

一、概述

在编辑、添加等操作时都用到Dialog对话框,不想全部写在一个组件中,就想重新写个Dialog组件,复用,把Dialog作为子组件,这里涉及到父子组件之间的传值。

二、自定义内容

Dialog组件的内容可以是任意的,甚至可以是表格或表单,这里应用了Element中Table和Form组件的两个样例。

<el-buttontype="text"@click="dialogTableVisible=true">打开嵌套表格的Dialog</el-button><el-dialogtitle="收货地址":visible.sync="dialogTableVisible"><el-table:data="gridData"><el-table-columnproperty="date"label="日期"width="150"></el-table-column><el-table-columnproperty="name"label="姓名"width="200"></el-table-column><el-table-columnproperty="address"label="地址"></el-table-column></el-table></el-dialog><el-buttontype="text"@click="dialogFormVisible=true">打开嵌套表单的Dialog</el-button><el-dialogtitle="收货地址":visible.sync="dialogFormVisible"><el-form:model="form"><el-form-itemlabel="活动名称":label-width="formLabelWidth"><el-inputv-model="form.name"autocomplete="off"></el-input></el-form-item><el-form-itemlabel="活动区域":label-width="formLabelWidth"><el-selectv-model="form.region"placeholder="请选择活动区域"><el-optionlabel="区域一"value="shanghai"></el-option><el-optionlabel="区域二"value="beijing"></el-option></el-select></el-form-item></el-form><divslot="footer"class="dialog-footer"><el-button@click="dialogFormVisible=false">取消</el-button><el-buttontype="primary"@click="dialogFormVisible=false">确定</el-button></div></el-dialog><script>exportdefault{data(){return{gridData:[{date:'2016-05-02',name:'王小虎',address:'上海市普陀区金沙江路1518弄'},{date:'2016-05-04',name:'王小虎',address:'上海市普陀区金沙江路1518弄'},{date:'2016-05-01',name:'王小虎',address:'上海市普陀区金沙江路1518弄'},{date:'2016-05-03',name:'王小虎',address:'上海市普陀区金沙江路1518弄'}],dialogTableVisible:false,dialogFormVisible:false,form:{name:'',region:'',date1:'',date2:'',delivery:false,type:[],resource:'',desc:''},formLabelWidth:'120px'};}};</script>

ViewCode点击打开嵌套表单的Dialog,效果如下:

三、组件之间传值

在实际开发过程中,对于Dialog对话框,会单独创建一个vue文件,进行处理。这样的话,维护页面比较方便。而不是在一个总的vue文件,涉及几千行代码。

下面使用一个小demo,结合Dialog对话框,演示组件之间传值。

目标:

父组件HelloWorld.vue,点击添加按钮,调用子组件Goods.vue,

弹出Dialog对话框。输入表单数据

表单数据回传给父组件HelloWorld.vue

新建一个ElementUI项目,修改文件HelloWorld.vue,完整内容如下:

<template><divclass="hello"><el-row><el-buttontype="primary"@click='add()'>添加</el-button></el-row>//使用子组件<Goodsref="gds"@children="parentGoods"/></div></template><script>importGoodsfrom"./Goods";exportdefault{name:'HelloWorld',//注册组件components:{Goods},methods:{add(){//弹出对话框this.$refs.gds.showDialog()},//子组件传值给父组件-货物parentGoods(obj){//打印子组件传递的值console.log("parentGoods",obj)}}}</script><stylescoped></style>

在HelloWorld.vue同级目录下,新建文件Goods.vue

<template><el-dialogtitle="添加货物":visible.sync="dialogFormVisible"width="500px"><el-form:model="form"><el-form-itemlabel="货物名称":label-width="formLabelWidth"><el-inputv-model="form.name"autocomplete="off"style="width:218px"></el-input></el-form-item><el-form-itemlabel="货物产地":label-width="formLabelWidth"><el-selectv-model="form.region"placeholder="请选择活动区域"><el-optionlabel="上海"value="shanghai"></el-option><el-optionlabel="北京"value="beijing"></el-option></el-select></el-form-item></el-form><divslot="footer"class="dialog-footer"><el-button@click="dialogFormVisible=false">取消</el-button><el-buttontype="primary"@click="setGoods()">确定</el-button></div></el-dialog></template><script>exportdefault{name:"Goods",data(){return{dialogFormVisible:false,form:{name:'',region:'',},formLabelWidth:'120px'}},methods:{showDialog(){this.dialogFormVisible=true},setGoods(){//$emit触发当前实例上的事件//触发父组件的children事件,将this.form回传过去this.$emit('children',this.form)//关闭对话框this.dialogFormVisible=false}}}</script><stylescoped></style>

vm.$emit(eventName,[…args])]----触发当前实例上的事件。附加参数都会传给监听器回调。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
使命召唤9打不开,每次都出现这个情况,怎么弄啊 使命召唤9无法进入关卡 百度知道百度知道的作用 梦见在水里走什么预兆 梦见光脚走路是什么兆头 西装如何穿搭才有高级感? 西装怎样搭配才能穿出又飒又优雅的气势? 西装如何搭配才能穿出优雅成熟的气质? 我考了两次科目三路考,很不辛没能通过,我想放弃了,纠结?学车很辛苦... 我考过不了科目三 element-ui之el-dialog详解 ...一共几部?highkick就是搞笑一家人吗?那这3部的名字又是什么?_百 ... 搞笑一家人 high kick 第三部短腿的反击高清版下载,邮箱1061550963@qq... 搞笑一家人第三部短腿的反击第26级英旭先生表白唱的歌是什么名字? 短腿的反击哪里能看 四川司法警官招生条件有哪些? 四川司法警官职业学院招生条件? 4399游戏盒帐号怎么设置密保 梦见很多人站在那好想是传销 如何将word中的表格断开? 怎么用吸棒取隐形眼镜 下列选举活动中,与村民委员会选举方式相同的有①县级人大代表的选举 ②... 公民基本民主权利、参与管理国际和社会的基础和标志我国公民在国家事务... ...但是换了1070以后觉得没有什么区别,请问需要换什么吗? 为什么北纬30度特别奇异?令人恐惧的百慕大三角,壮丽的埃及金字塔和狮身... 如何判断学生的学习状态呢? 了解学生的途径有哪些 PS2画面和各种性能好坏介绍 ps2的基本常识(求老鸟指点) PMP和NPDP是什么证书?是否有必要考? el-dialog很慢 如何:使用 Windows 窗体 FolderBrowserDialog 组件选择文件夹_百度知 ... 手机电量多久可以充满啊? 66w快充充多久能满? 120 w快充手机多久充满? 螺丝如何标注?比如:螺丝M20*1.5*60是什么意 梦见自己怀孕胎动要生了,梦见怀孕快生了是什么意思 ...宝宝考考你著名古迹秦始皇兵马俑位于中国哪个省份_支付宝蚂蚁庄园小... 兵马俑位于哪个省 谁能给我个《我这一辈子》里叶凡唱的片尾曲《风风雨雨》的下载地址_百... plc故障灯sf闪烁是什么意思? ...爱在北京""风风雨雨"(我这一辈子片尾曲)mp3 课件ppt是什么意思? 火影忍者中“亲热天堂”是本什么书? ...准备多少千克苹果,一箱苹果总重,30千克,箱重1千克 张爷爷家收了780千克苹果,装了30筐,还剩15千克。如果平均每筐装X千克平... 一箱苹果卖了 后还剩下30千克,这箱苹果原来重多少千克 2.有10箱苹果,每箱里苹果的质量相等,如果从每箱中取出3千克苹果... 中秋节时妈妈单位发了一箱苹果和一箱梨共重30千克,其中苹果占总数量的... 一箱苹果(不连箱)重多少千克?