详解element上传组件before-remove钩子问题解决
时间:2020-11-19 18:05:27|栏目:vue|点击: 次
应公司业务要求已上传文件删除前提醒确认代码如下
if(file && file.status === "success"){ return this.$confirm('此操作将永久删除该文件, 是否继续?', '系统提示',{ confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', center: true }).then(() => { this.$message({ type: 'success', message: '删除成功!' }); }).catch(() => { this.$message({ type: 'info', message: '已取消删除!' }); reject(false); }); };
确认会直接调用on-remove方法具体业务代码如下
if (file && file.status==="success") { this.$axios.delete("url" + data); }
下面是 before-upload 上传文件前的钩子,在遇到大于10M的文件时,我们返回false
//图片上传前钩子 beforeUpload(file) { this.loading = true; const isLt2M = file.size / 1024 / 1024 < 10; if (!isLt2M) { this.loading = false; this.$message.error("单个附件大小不能超过 10MB!"); } return isLt2M; // return false; }
但是这时会出现自动调用before-remove on-remove钩子
其实此时我们根本没有上传文件,所以也不会需要删除操作,然后我的代码就报错了。
解决办法如下:
//删除图片 beforeRemove(file, fileList) { let a = true; if (file && file.status==="success") { a = this.$confirm(`确定移除 ${ file.name }?`); } return a; }, //删除图片 handleRemove(file, fileList) { if (file && file.status==="success") { this.$axios.delete("accessory/one/" + file.response.id).then(resp => { if (resp.status == 200) { this.$message({ message: "删除成功", type: "success" }); } }); } },
把不需要执行的代码放入判断内。
if (file && file.status==="success") { }
上一篇:vue.js学习之递归组件
栏 目:vue
下一篇:Vue.js学习记录之在元素与template中使用v-if指令实例
本文标题:详解element上传组件before-remove钩子问题解决
本文地址:http://www.codeinn.net/misctech/24297.html