element-ui中upload组件多个无法获取对应的值

本文介绍了解决Element UI框架中图片上传组件的问题,当上传多张图片时如何获取每张图片对应的索引值。提供了三种解决方案,包括直接修改上传成功回调函数、源码层面增加参数以及对组件进行二次封装。
<el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-success="(res,file)=>{return sucss(res,file, index)}"
  :on-error="(res,file)=>{return error(res,file, index)}">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

饿了么UI图片上传:

upload组件使用多个时无法获取对应的值
首先列表中的数据都是动态获取的,所以要更改任一张图片就要得到这张图片的索引值index,在el-upload 组件中的:on-success="sucss"和 :on-change=""等这些方法中没有能传参的方式,所以只能在执行这些方法之前添加需要的参数了,方法如下:

方法一

把:on-success="sucss" 改成:on-success="(res,file)=>{return sucss(res,file, index)}""方可获取每条数据的索引index

方法二

找到 node_modules/element-ui/lib/element-ui.common.js(添加)修改props参数 objectIndex,然后继续往下找到,this.onSuccess的执行地点,加上这个参数    this.onSuccess(res, file, this.uploadFiles,this.objectIndex);
调用on-success="success"    1,success(response, file, fileList, objectIndex)或者success(response, file, fileList){[].slice.call(arguments)//获取对应索引值objectIndex的值}

方法三

可以对饿了么组件再次封装
http://www.hovis.cn/web/bj/2018-02-01/62.shtml

转载于:https://my.oschina.net/baiduapi/blog/1923752

Vue项目是一个基于MVVM模式的JavaScript框架,用于构建用户界面,它能够帮助开发者快速构建单页应用(SPA)。Element UI是为Vue.js提供的一套桌面端组件库,它基于饿了么团队在实际业务中抽象出的通用组件,拥有丰富的UI组件,可以帮助开发者快速搭建高质量的web界面。 要在使用Element UI的Vue项目中实现点击按钮手动上传二进制文件流,你可以使用Element UI的`<el-upload>`组件。该组件提供了丰富的属性和事件,可以满足你的需求,包括多文件上传和文件数量限制。以下是一个简单的示例实现: 1. 首先,确保已经将Element UI安装并引入到你的项目中。 2. 在你的Vue组件中,使用`<el-upload>`并设置`action`属性(上传的服务器接口地址)。 3. 设置`multiple`属性以支持多文件上传。 4. 设置`limit`属性以限制最多上传文件的数量。 5. 监听`change`事件,该事件会在文件列表改变时触发,你可以在这个事件中处理文件数组的更新。 6. 监听`exceed`事件,该事件会在尝试上传的文件数量超出限制时触发,你可以在这里给用户提示。 以下是一个简单的代码示例: ```html <template> <div> <el-upload action="#" :limit="10" :on-exceed="handleExceed" :on-change="handleChange" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> </div> </template> <script> export default { data() { return { fileList: [] // 文件列表 }; }, methods: { handleExceed(files, fileList) { this.$message.warning(`最多只允许上传10个文件,当前已超出限制。`); }, handleChange(file, fileList) { // 如果超出限制,移除超出的文件 if (fileList.length > 10) { this.fileList = fileList.slice(0, 10); } else { // 否则更新文件列表 this.fileList = fileList; } } } }; </script> ``` 在上面的代码中,我们使用了`el-upload`组件的`multiple`属性默认为`true`,所以它支持多文件上传。`limit`属性设置为`10`,表示最多可以上传10个文件。当用户试图上传超过10个文件时,`handleExceed`方法会被调用,向用户显示警告消息。`handleChange`方法会在文件列表发生变化时被调用,它检查文件数量并相应地更新`fileList`数据属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值