解决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 相关文章推荐
js弹出窗口之弹出层的小例子
Jun 17 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
jquery单行文字向上滚动效果的实现代码
Sep 05 Javascript
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
jquery中object对象循环遍历的方法
Dec 18 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
走进AngularJs之过滤器(filter)详解
Feb 17 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
layui 数据表格复选框实现单选功能的例子
Sep 19 Javascript
JS面试题中深拷贝的实现讲解
May 07 Javascript
angular组件间传值测试的方法详解
May 07 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
咖啡语言
2021/03/03 咖啡文化
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python求导数的方法
2015/05/09 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
python如何输出反斜杠
2020/06/18 Python
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
乡下人家教学反思
2014/02/01 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
家长通知书家长意见
2014/12/30 职场文书
六一儿童节致辞
2015/07/31 职场文书
实验心得体会范文
2016/01/25 职场文书