解决vue项目中type=”file“ change事件只执行一次的问题


Posted in Javascript onMay 16, 2018

问题描述

在最近的项目开发中遇到了这样的一个问题,当我上传了一个文件时,我将获取到的文件名清空后,却无法再次上传相同的文件

<template>
 <div class="hello">
   <input type="button" value="上传文件" name="" id="" @click="updata">
   <input type="file" style="display:none" @change="getFile" id="input-file">
   <div v-if="fileName">
    <p>上传的文件名:{{fileName}}</p>
    <button @click="delFile">清空文件</button>
   </div>
 </div>
</template>
<script>
import $ from 'n-zepto'
export default {
 name: 'HelloWorld',
 data () {
  return {
   fileName: ''
  }
 },
 methods:{
  updata(){ // 唤起change事件
   $('#input-file').click()
  },
  getFile(e){ // change事件
   this.doSomething()
  },
  doSomething(){ // do something
   this.fileName = e.target.files[0].name
  },
  delFile(){
   this.fileName=''
  }
 }
}
</script>

因为我只是将data中的属性值清空而已,文件名没有变当然会不出发change事件

解决办法

目前网上有好多解决办法,但基本上都无法在vue上使用,于是我想到了v-if

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

于是在代码中加入了一个小的开关,唤起change事件时就将他销毁

事件结束时再将它重建,这样问题就轻松的解决了

<template>
 <div class="hello">
   <input type="button" value="上传文件" name="" id="" @click="updata">
   <input v-if="ishowFile" type="file" style="display:none" @change="getFile" id="input-file">
   <div v-if="fileName">
    <p>上传的文件名:{{fileName}}</p>
    <button @click="delFile">清空文件</button>
   </div>
 </div>
</template>

<script>
import $ from 'n-zepto'
export default {
 name: 'HelloWorld',
 data () {
  return {
   fileName: '',
   ishowFile: true,
  }
 },
 methods:{
  updata(){ // 唤起change事件
   $('#input-file').click()
   this.ishowFile = false // 销毁
  },
  getFile(e){ // change事件
   this.doSomething()
   this.ishowFile = false // 重建
  },
  doSomething(){ // do something
   this.fileName = e.target.files[0].name
  },
  delFile(){
   this.fileName=''
  }
 }
}
</script>

总结

以上所述是小编给大家介绍的vue项目中解决type=”file“ change事件只执行一次的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript合并表格中具有相同内容单元格示例
Aug 11 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
Sep 08 Javascript
VUE中使用Vue-resource完成交互
Jul 21 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
React-native桥接Android原生开发详解
Jan 17 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 Javascript
jQuery zTree插件快速实现目录树
Aug 16 jQuery
JavaScript中的this妙用实例分析
May 09 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 #Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 #Javascript
vue中keep-alive的用法及问题描述
May 15 #Javascript
react中使用swiper的具体方法
May 15 #Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 #Javascript
浅谈AngularJS中$http服务的简单用法
May 15 #Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
May 15 #Javascript
You might like
我的论坛源代码(六)
2006/10/09 PHP
PHP 时间日期操作实战
2011/08/26 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
JS实现图片切换效果
2018/11/17 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
JS实现可控制的进度条
2020/03/25 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
python实现简单socket通信的方法
2016/04/19 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
python把转列表为集合的方法
2019/06/28 Python
Pytorch之finetune使用详解
2020/01/18 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
护理专业毕业生自荐信范文
2014/01/05 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
小学英语课后反思
2014/04/26 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
2016特色励志班级口号
2015/12/24 职场文书
基于docker安装zabbix的详细教程
2022/06/05 Servers
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server