解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题


Posted in Javascript onAugust 24, 2018

我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传。

项目中用的element-ui是V1.4.3

<el-upload
   class="upload-demo" drag
   ref="fileUpload"
   :action="urls.fileUpload"
   :on-success="handleUploadSuccess"
   :on-error="handleUploadError"
   :on-progress="progressUpload"
   :before-upload="beforeUpload"
   show-file-list
   multiple>
   <i class="el-icon-upload"></i>
  <div class="el-upload__text">点击上传,或者拖拽到这里</div>
 </el-upload>

解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题

代码中我是将before-upload方法返回false,然后点击确认之后,调_this.$refs.fileUpload.submit();但是在点击确定之后,文件还是没有上传,后面去看了element-ui源码,发现before-upload方法如果返回false,submit()方法是会被拦截的。
还有第二个问题,就是取消时_this.$refs.fileUpload.clearFiles();我调的clearFiles()方法,这个方法会把文件列表全部清空,我只想删除我当时取消的那个文件。
后面将这两句换成了如下两句:

解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题

继续上传: _this.$refs.fileUpload.$children[0].post(file);

取消时在文件列表中删除该文件:_this.$refs.fileUpload.handleRemove(file);

补充:VUE2.0 element upload使用

<template>
 <div class="uptemp">
  <el-upload
   class="upload-demo"
   ref="upload"
   multiple="false"
   action="/web/api/uploadFile"
   :on-preview="handlePreview"
   :on-remove="handleRemove"
   :on-change="handleChange"
   :before-upload="beforeUpload"
   :file-list="fileList"
   :auto-upload="false"
   :multiple="false">
   <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
   <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">导入</el-button>
   <div slot="tip" class="el-upload__tip">只能上传jpg/png文件</div>
  </el-upload>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    fileList: []
   }
  },
  mounted: function () {
   //加载完页面执行的函数
  },
  methods: {
   submitUpload() {
    this.$refs.upload.submit();
   },
   handleRemove(file, fileList) {
    console.log(file, fileList);
   },
   handlePreview(file) {
    console.log(file);
   },
   handleChange(file, fileList){
    console.log(file);
    console.log(fileList);
   },
   beforeUpload: function (file) {
    console.log(file)
    //这里是重点,将文件转化为formdata数据上传
    let fd = new FormData()
    fd.append('file', file)
    this.$http.post('/web/api/uploadFile', fd).then((res) => {
     console.log(res)
    }, (res) => {
     console.log(res)
    });
    return false;
   }
  },
  components: {
//      组件
  }
 }
</script>
<style scoped>
</style>
<style>
 .uptemp .el-upload-list {
  position: absolute;
  left: 140px;
  top: 0;
  width: 50%;
 }
 .uptemp {
  position: relative;
 }
 .uptemp .el-upload-list .el-upload-list__item {
  margin-top: 0;
 }
</style>

总结

以上所述是小编给大家介绍的解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
浅析JavaScript中的隐式类型转换
Dec 05 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
Aug 05 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
Oct 15 Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 Javascript
基于javascript实现样式清新图片轮播特效
Mar 30 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
Dec 06 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
浅析vue-router原理
Oct 19 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
解决layer弹出层msg的文字不显示的问题
Sep 11 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
AngularJS自定义表单验证功能实例详解
Aug 24 #Javascript
Vue源码解读之Component组件注册的实现
Aug 24 #Javascript
element-ui 关于获取select 的label值方法
Aug 24 #Javascript
微信小程序用户信息encryptedData详解
Aug 24 #Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 #Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
Aug 24 #Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
Aug 24 #Javascript
You might like
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
python实现的简单猜数字游戏
2015/04/04 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
python使用mysql的两种使用方式
2018/03/07 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
Python实现京东抢秒杀功能
2021/01/25 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
打架检讨书800字
2014/01/10 职场文书
学习委员自我鉴定
2014/01/13 职场文书
期终自我鉴定
2014/02/17 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
2016公司年会通知范文
2015/04/25 职场文书
《青山不老》教学反思
2016/02/22 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫