当前位置: 首页 > news >正文

VUE表单中多个el-upload上传组件共享回调函数解决方案

产品需求界面:

在产品配置页面表单中需要上传多个图片,项目中上传组件采用Element Plus 中的 el-upload,目前问题是每个上传组件都需要实现自己的回调,比如:on-change,采用官方推荐标准代码如下:

  <el-form-item label="站点图标"><el-upload action="#" list-type="picture-card" accept="image/*" :auto-upload="true":show-file-list="false" :on-change="handleChange" :before-upload="handleBeforeUpload"><el-image v-if="form.logourl" :src="form.logourl" fit="contain" class="avatar" /><el-icon v-else><Plus /></el-icon></el-upload></el-form-item>
const handleChange = (uploadFiles, uploadFiles) => {console.log('handle Change', uploadFile.url, uploadFiles);form.logourl = uploadFile.url;
};

由于此项目中同一个el-form中用了三个上传组件,如果每一个都写回调,需要写多个不同的回调拿到这个图片url显示出来,比较麻烦,现在需要的效果是三个上传组件的change事件回调采用一个回调函数,具体实现如下,直接代码展示:

 <el-form-item label="站点图标"><el-upload action="#" list-type="picture-card" accept="image/*" :auto-upload="true":show-file-list="false" :on-change="function (uploadFile, uploadFiles) {return handleChange(uploadFile, uploadFiles, 'logo')}" :before-upload="handleBeforeUpload"><el-image v-if="form.logourl" :src="form.logourl" fit="contain" class="avatar" /><el-icon v-else><Plus /></el-icon></el-upload></el-form-item>
const handleChange = (uploadFile, uploadFiles, uploadType) => {console.log('handle Change', uploadFile.url, uploadFiles, uploadType);switch (uploadType) {case 'logo': {form.logourl = uploadFile.url;}break;case 'wx': {form.wxurl = uploadFile.url;}break;case 'gzh': {form.gzhurl = uploadFile.url;}break;}};

核心代码解释:

:on-change="function (uploadFile, uploadFiles) {return handleChange(uploadFile, uploadFiles, 'logo')}"

这段代码是将一个匿名函数作为 :on-change 属性的值,该函数接收两个参数:uploadFileuploadFiles。在函数体内,它调用了名为 handleChange() 的方法,并传递了三个参数:uploadFileuploadFiles'logo'

具体而言,这段代码的作用是在上传组件的 :on-change 事件中触发 handleChange() 方法,并将当前上传的文件对象 uploadFile、已上传文件数组 uploadFiles 和字符串 'logo' 作为参数传递给 handleChange() 方法,这样的设计可以在处理多个上传组件时,根据不同的文件类型进行不同的操作或逻辑处理。

效果如下:

http://www.lryc.cn/news/284788.html

相关文章:

  • Opencv4快速入门笔记
  • three.js 点按钮,相机飞行靠近观察设备
  • 什么情况下物理服务器会运行出错?
  • 配置免费的SSL
  • (2)(2.1) Andruav Android Cellular(一)
  • [GN] Vue3.2 快速上手 ---- 核心语法(终章)_3
  • 在k8s上部署ClickHouse
  • 快速入门:使用 Gemini Embeddings 和 Elasticsearch 进行向量搜索
  • 【网络安全】-入门版
  • Elasticsearch各种高级文档操作3
  • 【算法题】66. 加一
  • 查看服务器资源使用情况
  • 锐浪报表 Grid++Report 明细表格标题重复打印
  • 编程笔记 html5cssjs 048 CSS链接
  • Spring DI
  • CorelDRAW Graphics Suite2024专业图形设计软件Mac/Windows版
  • 如何本地部署虚拟数字克隆人 SadTalker
  • 电容充电时间的计算
  • MicroPython核心(1):源码获取、编译构建
  • pyspark之Structured Streaming file文件案例1
  • 虚幻UE 特效-Niagara特效实战-雨天
  • k8s 集群搭建的一些坑
  • SpringMVC传递数据给前台
  • 国标GB28181安防视频监控EasyCVR级联后上级平台视频加载慢的原因排查
  • React16源码: React中的HostComponent HostText的源码实现
  • Unity3D代码混淆方案详解
  • 安科瑞应急疏散照明系统在歌舞娱乐等场所的应用
  • Go语言协程使用
  • JAVA如何创建对象
  • 《WebKit 技术内幕》之五(2): HTML解释器和DOM 模型