解決vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit()不生效問題
我要實(shí)現(xiàn)的功能是在上傳文件之前校驗(yàn)是否表格中存在重復(fù)的數(shù)據(jù),有的話,需要彈窗提示是否覆蓋,確認(rèn)之后繼續(xù)上傳,取消之后,就不再上傳。
項(xiàng)目中用的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">點(diǎn)擊上傳,或者拖拽到這里</div> </el-upload>

代碼中我是將before-upload方法返回false,然后點(diǎn)擊確認(rèn)之后,調(diào)_this.$refs.fileUpload.submit();但是在點(diǎn)擊確定之后,文件還是沒有上傳,后面去看了element-ui源碼,發(fā)現(xiàn)before-upload方法如果返回false,submit()方法是會(huì)被攔截的。
還有第二個(gè)問題,就是取消時(shí)_this.$refs.fileUpload.clearFiles();我調(diào)的clearFiles()方法,這個(gè)方法會(huì)把文件列表全部清空,我只想刪除我當(dāng)時(shí)取消的那個(gè)文件。
后面將這兩句換成了如下兩句:

繼續(xù)上傳: _this.$refs.fileUpload.$children[0].post(file);
取消時(shí)在文件列表中刪除該文件:_this.$refs.fileUpload.handleRemove(file);
補(bǔ)充: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">導(dǎo)入</el-button>
<div slot="tip" class="el-upload__tip">只能上傳jpg/png文件</div>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
fileList: []
}
},
mounted: function () {
//加載完頁面執(zhí)行的函數(shù)
},
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)
//這里是重點(diǎn),將文件轉(zhuǎn)化為formdata數(shù)據(jù)上傳
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>
總結(jié)
以上所述是小編給大家介紹的解決vue2.0 element-ui中el-upload的before-upload方法返回false時(shí)submit()不生效問題,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue_drf實(shí)現(xiàn)短信驗(yàn)證碼
我們?cè)谧鼍W(wǎng)站開發(fā)時(shí),登錄頁面很多情況下是可以用手機(jī)號(hào)接收短信驗(yàn)證碼,本文主要介紹了vue_drf實(shí)現(xiàn)短信驗(yàn)證碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
解決vue項(xiàng)目,npm run build后,報(bào)路徑錯(cuò)的問題
這篇文章主要介紹了解決vue項(xiàng)目,npm run build后,報(bào)路徑錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Vue動(dòng)態(tài)組件component標(biāo)簽的用法大全
這篇文章主要介紹了Vue動(dòng)態(tài)組件component標(biāo)簽的用法,在Vue中,可以通過component標(biāo)簽的is屬性動(dòng)態(tài)指定標(biāo)簽,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
vue2.0的contextmenu右鍵彈出菜單的實(shí)例代碼
本篇文章主要介紹了vue2.0的contextmenu右鍵彈出菜單的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
基于vue中對(duì)鼠標(biāo)劃過事件的處理方式詳解
今天小編就為大家分享一篇基于vue中對(duì)鼠標(biāo)劃過事件的處理方式詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
使用webpack-obfuscator進(jìn)行代碼混淆及報(bào)錯(cuò)解決過程
隨著前端應(yīng)用的復(fù)雜度增加,保護(hù)客戶端的JavaScript代碼變得更為重要,webpack-obfuscator插件通過對(duì)代碼進(jìn)行混淆,如變量重命名、字符串加密等,提高代碼的保密性,防止源碼被輕易查看或修改2024-10-10
Vue實(shí)現(xiàn)上拉加載下一頁效果的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Vue實(shí)現(xiàn)上拉加載下一頁效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue有一定幫助,需要的可以參考一下2022-08-08
vue中實(shí)現(xiàn)子組件相互切換且數(shù)據(jù)不丟失的策略詳解
項(xiàng)目為數(shù)據(jù)報(bào)表,但是一個(gè)父頁面中有很多的子頁面,而且子頁面中不是相互關(guān)聯(lián),但是數(shù)據(jù)又有聯(lián)系,所以本文給大家介紹了vue中如何實(shí)現(xiàn)子組件相互切換,而且數(shù)據(jù)不會(huì)丟失,并有詳細(xì)的代碼供大家參考,需要的朋友可以參考下2024-03-03

