el-dialog父子传值弹窗实现(弹窗内容较多时分开写)

news/2025/3/19 19:58:03/

需求:父组件点击按钮后打开弹窗,但是因为弹窗内容巨多,直接提取出来,只要在父组件点击时才显示弹窗,并且传递值给弹窗做数据回显,编辑或者新增功能都可以。

 

 

 1.首先建立父子关系

创建个弹窗组件dialog.vue,把弹窗内容丢进去

父组件引入注册挂载,并且设置v-if的值,默认为false,ref也要设置,绑定节点,点击的时候需要通过ref传递函数传值给子组件

 <Dialog v-if="showDialog" ref="dialogData"></Dialog>import Dialog from './dialog.vue';
export default {components: {Dialog},
}

2.父组件写内容,点击传递当前行给子组件

父组件关键代码,init函数并且传当前行给子组件,完整代码最后贴

 openDialog(row) {this.showDialog = true;this.$nextTick(() => {// 每次都传递当前行数据this.$refs.dialogData.init(row);});}

3.弹窗自组件在methods接受父组件传值

    init(rowdata){
//打开弹窗this.dialogVisible = true;
//接收父组件的值this.data=rowdataconsole.log(this.data,'接受传递的值');},

4.父组件完整代码

<template><div class="content-box"><div class="container"><h1>弹窗的拆分</h1><el-table :data="tableData" style="width: 100%" max-height="250"><el-table-column fixed prop="date" label="日期" width="150"> </el-table-column><el-table-column prop="name" label="姓名" width="120"> </el-table-column><el-table-column prop="province" label="省份" width="120"> </el-table-column><el-table-column label="操作" width="120"><template slot-scope="scope"><el-button @click.native.prevent="openDialog(scope.row)" type="text" size="small">打开弹窗</el-button></template></el-table-column></el-table><Dialog v-if="showDialog" ref="dialogData"></Dialog></div></div>
</template><script>
import Dialog from './dialog.vue';
export default {components: {Dialog},data() {return {showDialog: false,tableData: [{date: '2016-05-03',name: '王小虎',province: '上海'},{date: '2022-12-11',name: '张三',province: '武汉'},{date: '2016-05-03',name: '李四',province: '上海'}]};},mounted() {},methods: {openDialog(row) {this.showDialog = true;this.$nextTick(() => {// 每次都传递当前行数据this.$refs.dialogData.init(row);});}}
};
</script><style lang="scss" scoped></style>

5.子组件完整代码

操作都在子组件完成,包括编辑接口调用,父组件只是传值和打开弹窗,其他不做操作

<template><el-dialogtitle="提示":visible.sync="dialogVisible"width="30%":before-close="handleClose">{{ data }}<span slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button><el-button type="primary" @click="dialogVisible = false">确 定</el-button></span>
</el-dialog>
</template><script>
export default {data() {return {dialogVisible: false,data:{}};},mounted() {},methods: {init(rowdata){this.dialogVisible = true;this.data=rowdataconsole.log(this.data,'接受传递的值');},handleClose(done) {this.$confirm('确认关闭?').then(_ => {done();}).catch(_ => {});}}
};
</script><style lang="scss" scoped></style>

文章到此结束,希望对你有所帮助~


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

相关文章

掌握前端框架,打造高效的开发流程

引言 在当今互联网时代&#xff0c;前端开发已经成为了一项非常重要的技能。随着互联网的快速发展&#xff0c;前端技术也在不断演进和更新。为了提高开发效率和代码质量&#xff0c;掌握前端框架已经成为了必备的技能之一。本文将介绍如何通过掌握前端框架&#xff0c;打造高…

mac版pytorch安装

1、创建新环境 conda create -n pytorch python3.7 2、进入新环境 conda activate pytorch 3、使用pip安装pytorch pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple 请使用手机"扫一扫"x

千牛插件开发历程

2014.11.25 最近因公司需要&#xff0c;把公司ERP系统集成到千牛上。经过测试发现&#xff0c;貌似千牛插件开发不支持jquery&#xff0c;只能使用阿里巴巴开发的kissy&#xff0c;正在学习&#xff0c;感觉还是不错的。 11月27日&#xff1a; 经过这两天研究测试&#xff0…

千牛客服面板插件开发

最近正在开发千牛客服面板插件&#xff0c;但是基于本人对此的开发了解程度基本为0&#xff0c;再加上官方文档比较散乱&#xff0c;答疑不及时或不全面&#xff0c;因此开发难度比较高。虽然已经完成了第一阶段的开发&#xff0c;但是也是磕磕碰碰的。有些开发逻辑甚至不知道是…

如何让千牛工作台/阿里旺旺不要自动升级

在我们使用一些聊天软件的时候&#xff0c;也会有这种感觉&#xff0c;总是喜欢最先使用的。事实上&#xff0c;这不可能&#xff0c;因为软件自身设置了自动升级的程序&#xff0c;所以&#xff0c;只要程序更新&#xff0c;产品就会自动升级了。 有时候&#xff0c;不想升级怎…

Axure 9 Mac 版

Axure 9 Mac 版 下载 链接: https://pan.baidu.com/s/1LSQKfkpJ2-R2oCVOyIG2vA?pwd1234 提取码: 1234 安装 安装如果提示 “文件已损坏&#xff0c;打不开&#xff0c;您应该将它移到废纸篓”&#xff0c;请按照如下步骤进行安装&#xff1a; 双击 .dmg 文件&#xff0c;…

千牛工作台使用教程

千牛工作台几乎是各个淘宝天猫卖家必备的后台工作软件&#xff0c;管理着我们网上的店铺&#xff0c;我们在后台可以看到自己店铺的交易信息&#xff0c;每日流量和交易的统计 工具/原料 电脑 千牛工作台 方法/步骤 1、下载千牛工作台 通过百度软件或者360软件管家直接下载…

pc端网页唤起本地的咚咚和千牛

前段时间接手了一个需求,需求大概就是pc端的产品需要做一个点击按钮唤起咚咚和千牛,并且需要打开对应的顾客聊天窗口。 当时接到这个需求人都不好了,大牛们都没接触过这个需求,不知道咚咚和千牛的协议,去看淘宝和京东开发平台的文档也没发现什么有用的,然后就一直考古呀…