您好,登錄后才能下訂單哦!
基于 Vue 的 UI 組件庫現在已經有很多了,尤其是移動端的。現在又多了一個 iView 。
iView 主要服務于 PC 界面的中后臺業務,是一套高質量的開源 UI 組件庫,先上地址:
https://github.com/iview/iview
官網是:
https://www.iviewui.com/
特性
最近做一個后臺系統用的功能 總結下遇見的問題
功能需求點
iView 提供的上傳組件
<Upload multiple ref="upload" :before-upload="handleUpload" :show-upload-list="false" :on-success="uploadSuccess" action="http://jsonplaceholder.typicode.com/posts/"> <Button type="ghost" icon="ios-cloud-upload-outline">瀏覽</Button> </Upload> <div v-for="(item, index) in file">Upload file: {{ item.name }} <a href="javascript:;" rel="external nofollow" @click="delectFile(item.name)">X</a> <Button size="small" v-if="index === 0" ![](https://user-gold-cdn.xitu.io/2018/3/14/16223a8c12c38be9?w=649&h=743&f=png&s=55740) type="primary" @click="upload" :loading="loadingStatus">上傳</Button> </div>
用到的API參數 / 方法
上傳選擇文件 判斷文件格式 保存文件
選擇文件后會調用方法,在里面做的事情有 判斷文件類型是否滿足需求,如果滿足就保存到需要上傳的文件List里,這里我們需要自己定義一個keyID,應為是動上傳需要展示,刪除功能,如果沒有唯一ID不知道刪除那個
這里如果允許文件上傳了不用但心什么,此鉤子會把選擇的當數組一樣需要調用上文件事件前的鉤子事件,所以也不能但心多文件選擇只會生成一個KeyID
handleUpload (file) { // 上傳文件前的事件鉤子 // 選擇文件后 這里判斷文件類型 保存文件 自定義一個keyid 值 方便后面刪除操作 let keyID = Math.random().toString().substr(2); file['keyID'] = keyID; // 保存文件到總展示文件數據里 this.file.push(file); // 保存文件到需要上傳的文件數組里 this.uploadFile.push(file) // 返回 falsa 停止自動上傳 我們需要手動上傳 return false; }
刪除功能
delectFile (keyID) { // 刪除文件 // 刪除總展示文件里的當前文件 this.file = this.file.filter(item => { return item.name != name }) // 刪除需要上傳文件數據里的當前文件 this.uploadFile = this.uploadFile.filter(item => { return item.KeyID != keyID }) }
上傳文件
upload () { // 上傳文件 for (let i = 0; i < this.uploadFile.length; i++) { let item = this.file[i] this.$refs.upload.post(item); } },
這里如果是多文件的時候需要循環上傳一個一個來,如果一次上傳多個組件會報錯,只支持一次上傳一個文件,希望iView 以后會支持一次上傳多個吧,這個上傳我開始一直找不到,不知道手動上傳停止自己上傳后怎么手動傳,找功能找半天,在官方文檔里也沒有寫,官方到是有一個例子手動上傳的但:
并沒有事實上傳的操作 這里也只是模擬啦 上傳方法是在源碼里找到的
上傳成功后
應該我們的上傳文件功能和提交整個頁面的數據是分開的 所以提交數據的時候需要驗證選擇文件是否以上傳在上傳成功事件里讓后右把我們傳過去的數據返出來做清空待上傳文件數組里的數據,提交數據時候只需要判斷待上傳文件數組是否為空就可以了
文件上傳回調返回三個參數
uploadSuccess (res, file) { // 文件上傳回調 上傳成功后刪除待上傳文件 console.log(response) console.log(file) },
這里有個小問題 應該上傳的時候是循環調用上傳的,如果多個文件上傳這里會有多個回調結果不能成功一個文件提示用戶一次,所以需要處理一下,這里自定義一個數每次回調回來作自增處理,當值與上待上傳文件的length 相等時才提示上傳結果
完整代碼GitHub地址 https://github.com/bailin240/ArticleCode/tree/master/view/iViewUpload
總結
以上所述是小編給大家介紹的vue iView 上傳組件之手動上傳功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。