最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中element 上傳功能的實(shí)現(xiàn)思路

 更新時(shí)間:2018年07月06日 10:09:01   作者:木石心  
這篇文章主要介紹了vue中element 的上傳功能的實(shí)現(xiàn)思路,本文大概通過兩種實(shí)現(xiàn)思路,具體內(nèi)容詳情大家跟隨腳本之家小編一起看看吧

element 的上傳功能

最近有個(gè)需求,需要在上傳文件前,可以進(jìn)行彈窗控制是否上傳 upload

看完文檔后,感覺有兩種思路可以實(shí)現(xiàn)

before-upload
auto-upload, on-change

before-upload

初始代碼

// template
<el-upload 
 class="avatar-uploader" 
 action="https://jsonplaceholder.typicode.com/posts/" 
 :show-file-list="false" 
 :on-success="handleAvatarSuccess" 
 :before-upload="beforeAvatarUpload">
 <img v-if="imageUrl" :src="imageUrl" class="avatar">
 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
// javscript
data() {
 return {
  imageUrl: ""
 };
 },
 methods: {
 handleAvatarSuccess(res, file) {
  this.imageUrl = URL.createObjectURL(file.raw);
 },
 beforeAvatarUpload(file) {
  // 文件類型進(jìn)行判斷 
  const isJPG = file.type === "image/jpeg";
  const isLt2M = file.size / 1024 / 1024 < 2;
  if (!isJPG) {
  this.$message.error("上傳頭像圖片只能是 JPG 格式!");
  }
  if (!isLt2M) {
  this.$message.error("上傳頭像圖片大小不能超過 2MB!");
  }
  return isJPG && isLt2M;
 }
 }

初始效果圖

 

考慮在before-upload中進(jìn)行彈窗后, return false | reject() 即可

修改代碼

由于 this.$confirm 是異步操作,因而需要等待其結(jié)果才能進(jìn)行下一步操作

async beforeAvatarUpload(file) {
  const isSubmit = await this.$confirm('此操作將上傳文件, 是否繼續(xù)?', '提示', {
   confirmButtonText: '確定',
   cancelButtonText: '取消',
   type: 'warning'
  }).then(() => {
   return true
  }).catch(() => { 
   return false  
  });
  console.log(isSubmit)
  return isSubmit;
 }

確認(rèn)提交和取消提交 ==> 結(jié)果卻一樣

確認(rèn)提交

 

取消提交

 

結(jié)果卻不可以,因而考慮另一種思路了, before-upload 只是進(jìn)行判斷文件是否適合,從而是否上否上傳到服務(wù)器,而不是用來等待用戶進(jìn)行操作使用的

手動(dòng)上傳

auto-upload
on-change
// template
<el-upload 
 ref="upload"
 class="upload-demo" 
 action="https://jsonplaceholder.typicode.com/posts/" 
 :on-preview="handlePreview" 
 :limit="1" 
 :auto-upload="false"
 :on-change="handleChange"
 :show-file-list="true" 
 :file-list="fileList"
 :on-error="handleError"
 :on-success="handleSuccess">
 <el-button size="small" type="primary">點(diǎn)擊上傳</el-button>
</el-upload>
// js
data() {
return {
 fileList: [
 ],
 bool: true
 }
},
methods: {
 handleRemove(file, fileList) {
 console.log(file, fileList);
 },
 handlePreview(file) {
 console.log(file);
 },
 handleError(err, file) {
  alert('失敗')
  this.fileList = []
 },
 handleSuccess(res, file) {
 alert('成功')
 this.fileList = []
 },
 handleExceed(files, fileList) {},
 async handleChange() {
 const isSubmit = await this.$confirm('此操作將永久刪除該文件, 是否繼續(xù)?', '提示', {
  confirmButtonText: '確定',
  cancelButtonText: '取消',
  type: 'warning'
 }).then(() => {
  return false
 }).catch(() => { 
  return true  
 });
 if (isSubmit) {
  this.$refs.upload.submit() 
 } else {
  this.fileList = []
 }
 } 
}

確認(rèn)提交

 

取消提交

 

此方法可行,現(xiàn)在就是控制因?yàn)槲募顟B(tài)改變而導(dǎo)致兩次彈窗, 修改如下

文件狀態(tài)變更 不是成功就是失敗,因而在成功失敗的函數(shù)進(jìn)行控制即可

添加flag標(biāo)識(shí)進(jìn)行控制彈窗即可

data() {
 return {
 isConfirm: true
 }
}
async handleChange() {
 if (!this.isConfirm) {
 this.isConfirm = true
 return
 }
 const bo = await this.$confirm('此操作將永久刪除該文件, 是否繼續(xù)?', '提示', {
 confirmButtonText: '確定',
 cancelButtonText: '取消',
 type: 'warning'
 }).then(() => {
 return false
 }).catch(() => { 
 return true  
 })
 if (bo) {
 this.$refs.upload.submit()
 this.isConfirm = false
 } else {
 this.fileList = []
 }
}

修改后便可以了,只是注意 在 on-error 和 on-succes 中注意清空 fileList = [] ,這樣還可以重新添加文件

確定上傳

 

取消上傳

 

總結(jié)

以上所述是小編給大家介紹的vue中element 的上傳功能的實(shí)現(xiàn)思路,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue基于mint-ui的城市選擇3級(jí)聯(lián)動(dòng)的示例

    vue基于mint-ui的城市選擇3級(jí)聯(lián)動(dòng)的示例

    本篇文章主要介紹了vue基于mint-ui的城市選擇3級(jí)聯(lián)動(dòng)的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • vue+web端仿微信網(wǎng)頁版聊天室功能

    vue+web端仿微信網(wǎng)頁版聊天室功能

    這篇文章主要介紹了vue+web端仿微信網(wǎng)頁版聊天室功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • vue3中的setup()函數(shù)基本使用詳解

    vue3中的setup()函數(shù)基本使用詳解

    在 Vue3 中,setup 函數(shù)是一個(gè)新引入的概念,它代替了之前版本中的 data、computed、methods 等選項(xiàng),用于設(shè)置組件的初始狀態(tài)和邏輯,本文將主要介紹Setup的基本用法和少量原理,感興趣的朋友一起看看吧
    2024-02-02
  • 關(guān)于element-ui resetFields重置方法無效問題及解決

    關(guān)于element-ui resetFields重置方法無效問題及解決

    這篇文章主要介紹了關(guān)于element-ui resetFields重置方法無效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺析vue-router原理

    淺析vue-router原理

    這篇文章主要圍繞Vue的SPA單頁面設(shè)計(jì)展開。SPA(single page application):單一頁面應(yīng)用程序,有且只有一個(gè)完整的頁面,對(duì)vue router原理感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • 一文帶你完全掌握Vue自定義指令

    一文帶你完全掌握Vue自定義指令

    作為使用Vue的開發(fā)者,我們對(duì)Vue指令一定不陌生,諸如v-model、v-on、等,同時(shí)Vue也為開發(fā)者提供了自定義指令的api,熟練的使用自定義指令可以極大的提高了我們編寫代碼的效率,讓我們可以節(jié)省時(shí)間開心的摸魚
    2023-03-03
  • vue+vuex+axios+echarts畫一個(gè)動(dòng)態(tài)更新的中國(guó)地圖的方法

    vue+vuex+axios+echarts畫一個(gè)動(dòng)態(tài)更新的中國(guó)地圖的方法

    本篇文章主要介紹了vue+vuex+axios+echarts畫一個(gè)動(dòng)態(tài)更新的中國(guó)地圖的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Vue新一代狀態(tài)管理工具Pinia的具體使用

    Vue新一代狀態(tài)管理工具Pinia的具體使用

    本文主要介紹了Vue新一代狀態(tài)管理工具Pinia的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題

    Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題

    這篇文章主要介紹了Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Vue3?響應(yīng)式高階用法之customRef()的使用

    Vue3?響應(yīng)式高階用法之customRef()的使用

    customRef()是Vue3的高級(jí)工具,允許開發(fā)者創(chuàng)建具有復(fù)雜依賴跟蹤和自定義更新邏輯的ref對(duì)象,本文詳細(xì)介紹了customRef()的使用場(chǎng)景、基本用法、功能詳解以及最佳實(shí)踐,包括防抖、異步更新等用例,旨在幫助開發(fā)者更好地理解和使用這一強(qiáng)大功能
    2024-09-09

最新評(píng)論

瓦房店市| 麟游县| 临澧县| 嘉义县| 宜州市| 静海县| 汕尾市| 新乡县| 涿州市| 汉阴县| 丹江口市| 德清县| 库伦旗| 宣威市| 山东省| 横峰县| 北碚区| 宁强县| 乐清市| 祁阳县| 大新县| 拜泉县| 左云县| 格尔木市| 大竹县| 鹤峰县| 达州市| 敖汉旗| 永兴县| 陇南市| 绥宁县| 封开县| 凤阳县| 高要市| 澜沧| 广宗县| 开平市| 盐城市| 孟州市| 伊川县| 咸宁市|