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

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

项目中用的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>

代码中我是将before-upload方法返回false,然后点击确认之后,调_this.$refs.fileUpload.submit();但是在点击确定之后,文件还是没有上传,还有第二个问题,就是取消时_this.$refs.fileUpload.clearFiles();我调的clearFiles()方法,这个方法会把文件列表全部清空,我只想删除我当时取消的那个文件。

后面去看了element-ui源码,发现before-upload方法如果返回false,submit()方法是会被拦截的。源码如下:

源码中最终是调用了子组件中的post方法,如果不知道是哪个子组件可打印出_this.$refs.fileUpload.$children

于是我将这两句换成了如下图两句:

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

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

原文地址:https://www.cnblogs.com/fangnianqin/p/9528750.html

时间: 2024-10-12 04:24:37

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

vue2.0 + element ui 后台管理系统

vue2.0 和 elementui  搭建的一个后台管理系统 概述: 这是一个用vuejs2.0和element搭建的后台管理界面. 技术栈: vue2.0:渐进式JavaScript框架,易用.灵活.高效,似乎任何规模的应用都适用. element ui:基于vue2.0的ui组件库. vue-router:一般单页面应用spa都要用到的前端路由. vuex:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式. webpack + es6/7 + less mock.js : 相

在IE浏览器中执行OpenFlashChart的reload方法时无法刷新的解决方法

由于项目需求,需要在网页上利用图表展示相关数据的统计信息,采用了OpenFlashChart技术.OpenFlashChart是一款开源的以Flash和Javascript为技术基础的免费图表,用它能创建一些很有效果的报表分析图表.最重要的是它是开源和免费的,支持多种语言.首先在官网上下载开发包,里面包含了所需的flash文件.js文件以及多种语言的demo,这些demo写的非常详细,可以进行参考开发.由于项目使用.net来开发,所以我学习了一下开发包中对应的dotnet代码,这个.net项目采

xp 中的IIS安装成功之后,访问网页显示没有权限访问解决方法

在做xp的IIS发布网站时遇到一个问题就是当你访问网站的时候,显示没有权限访问网站,但是我已经开启了匿名访问网站了,怎么还没有权限访问呢?后来经过上网搜资料解决,当时很多网上都说没打开匿名访问,当时我就仔细查看了一下,我又点开网站的目录安全性,查看匿名访问是否被选中,当时我点进去之后发现匿名访问已经被选中了啊.为什么还不能上呢.后来我才发现原来是因为匿名访问的用户错了,一开始安装的IIS的匿名访问用户是7BKSBRPUUJY1Z9N\IWAM_7BKSBRPUUJY1Z9N,主要是IWAM账号是

JavaScript中的window.close在FireFox和Chrome上不能正常动作的解决方法

原文:JavaScript中的window.close在FireFox和Chrome上不能正常动作的解决方法 JS中关闭窗口的方法window.close()在IE上能够正常动作,而在FireFox和Chrome上无法动作. (当时,在Chrome35.0上的时候还是可以的,Chrome36.0上就无法动作了JS中关闭窗口的方法window.close()在IE上能够正常动作,而在FireFox和Chrome上无法动作. (当时,在Chrome35.0上的时候还是可以的,Chrome36.0上就

Django链接Mysql 8.0 出现错误(1045:Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO) 的一种解决方法

运行环境: Django版本2.0 ; Mysql 版本 8.0.11; 错误代码:  django.db.utils.OperationalError: (1045:Access denied for user 'root'@'localhost' (using password: NO) 这个错误看网上的说法基本都是由于 数据库的 用户名 和 密码 不正确导致的 ,下面是我在Django Setting.py里的设置: ``` DATABASES = { 'default': { 'ENGI

VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法

原文:VS2010中,无法嵌入互操作类型"--",请改用适用的接口的解决方法 1.提示:在VS2010,在引用COM组件的时候,出现了无法嵌入互操作类型"--",请改用适用的接口的错误提示. 2.解决方案: 选中项目中引入的dll,鼠标右键,选择属性,把"嵌入互操作类型"设置为False. 例如: MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass(); 提示无法嵌入互操作类型MSXML2.XMLH

MDK5.00中*** error 65: access violation at 0xFFFFFFFC : no &#39;write&#39; permission的一种解决方法

http://blog.csdn.net/coderfun/article/details/9417289 这是在调试过程中的修改方法,所以在每次运行的时候,都要设置. 先进入调试模式(crtl+F5),接下来在debug菜单下打开memory_map对话框,在这个对话框中添加新的映射区域0xFFFFF000,0xFFFFFFFF(map range)和它的属性,勾选read,write. MDK5.00中*** error 65: access violation at 0xFFFFFFFC

iOS开发中Can&#39;t find keyplane that supports type 5 for keyboard iPhone-Portrait-PhonePad的解决方法

刚才发现的问题,我在开发的过程中会出这种提示Can't find keyplane that supports type 5 for keyboard iPhone-Portrait-PhoneP,把我吓一跳,我立马找度娘翻译了一下,大概意思是找不到支持键盘iPhone画像keyplane phonep 5型,我也不知道这是什么问题,于是我继续虐度娘,终于找到了一点. 意思是Xcode 6有小bug,只要设置一下就没问题了,设置的如下图: 点击模拟器上面的菜单:Hardware->Keyboar

在vs中出现无法嵌入互操作类型“……”,请改用适用的接口的解决方法

1.在生成项目时提示所引用COM组件 出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示. 2.解决方案: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False. 在vs中出现无法嵌入互操作类型"--",请改用适用的接口的解决方法