element upload 鉤子函數的坑及解決
element upload 鉤子函數的坑
因為需求需要我將element 的upload組件放在瞭el-dialog中,但是坑就在這
看圖片的上方是不是可以看到上傳成功四個大字,但是它並不是真的在上傳成功後顯示出來的,隻要頁面加載成功,打開和關閉el-dialog都會出來這四個大字,來看代碼
這是upload部分設置代碼:
(請忽略方法名稱的不規范,這裡隻做個演示)
on-success調用的方法
success () { this.$message.success('上傳成功') }
以上可以看出我們並沒有上傳文件,但是卻觸發瞭上傳成功的鉤子,不僅僅on-success是這樣,on-error也是會被這樣觸發。
所以最後我把代碼改成瞭如下:
el-upload部分代碼:
<el-upload class="upload-demo" ref="upload" drag :action="uploadBusinessType" accept=".xls, .xlsx, .csv" :auto-upload="false" :on-success="handleAvatarSuccess" multiple >
方法的代碼:
handleAvatarSuccess(...params) { ‘這裡代碼就不在表述' }
…params會返回一個數組,裡邊包含瞭這麼一些東西
其中包含的有後端返回的請求成功的狀態值,最終我是通過這個來判斷是否上傳成功,規避瞭在打開和關閉el-dialog就觸發鉤子的問題
element-ui中組件函數鉤子自帶參數,不能添加參數問題
在element-ui中的組件函數鉤子一般都是自帶參數如:
//上傳組件 <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="**beforeRemove**" multiple :limit="3" :on-exceed="handleExceed" :file-list="fileList"> <el-button size="small" type="primary">點擊上傳</el-button> <div slot="tip" class="el-upload__tip">隻能上傳jpg/png文件,且不超過500kb</div> </el-upload>
API中解釋:
on-remove 文件列表移除文件時的鉤子 function(file, fileList)
也就是上面的beforeRemove函數自帶file, fileList這兩參數
beforeRemove(file, fileList){ //就這兩參數 }
那麼想要帶自己的參數呢,,尤其一般在表格中的上傳,肯定要攜帶當前一行的參數(動態參數)時;
我們對before-remove屬性修改
//上傳組件 <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="(file,fileList)=>{ return beforeRemove(file,fileList,data) }" multiple :limit="3" :on-exceed="handleExceed" :file-list="fileList"> <el-button size="small" type="primary">點擊上傳</el-button> <div slot="tip" class="el-upload__tip">隻能上傳jpg/png文件,且不超過500kb</div> </el-upload>
在before-remove上在return 一個函數,並攜帶data(自己想要的參數)
這樣在函數beforeRemove中就可以拿到data瞭
beforeRemove(file,fileList,data){ debugger }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- element el-upload文件上傳覆蓋第一個文件的實現
- 解析element-ui中upload組件傳遞文件及其他參數的問題
- Vue+UpLoad實現上傳預覽和刪除圖片的實踐
- elementUI自定義上傳文件功能實現(前端後端超詳細過程)
- vue封裝el-upload批量上傳隻請求一次接口