第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

vue 本地預(yù)覽多圖上傳

標(biāo)簽:
Vue.js

此组件的开发是为了后台管理的多图上传,并实现本地预览修改,当用户确认后开始整体提交,此组件使用了我的另一篇文章所用到的组件

所遇到的问题?

选择多个文件后无法实现本地预览?

  • 使用es6的for of 对获取到的文件对象数组 filelist进行迭代循环

  • 使用 FileReader 对象将选择的图片文件转换成可以前端展示的 base 64数据

  • 在新数组被将图片数据push进去就可以实现本地多图预览了

 fileChange(files) { // files 为接收到的文件对象
      const _this = this // 保存this 
      for (let i = 0; i < files.length; i++) { //对文件数组对象进行迭代循环
        const reader = new FileReader()        this.imgfiles.push(files[i])
        reader.readAsDataURL(files[i])
        reader.end = function() {          console.log(this.result)
          _this.imgs.push(this.result)
        }
      }

对不要的图片进行删除?

  • 获取图片数组下标,使用数组 slice方法进行删除
    获取下标:

   <div class="img-box" v-for="(item, i) in imgs" :key='i' >
         <img :class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="item" alt=""> <span @click="del(i)"><i class="el-icon-delete"></i></span>
    </div>

v-for 的i就代表了数组的下标,因为我们不仅需要删除图片数组,还需要删除文件数组,删除操作:

    del(i) {      this.imgfiles.splice(i, 1)      this.imgs.splice(i, 1)      this.imgsChange()
    },

将获取到的文件对象向父组件进行广播

    imgsChange() {      this.$emit('imgsChange', this.imgfiles) //广播事件名:imgsChange,参数  this.imgfiles
    }

下面是我封装的组件的完整代码,没有进行更多的操作,仅仅是把选择的图片可以本地预览,删除,增加

<template>
    <div class="img-files flex">
        <div v-if='imgs.length>0' class="flex">
            <div class="img-box" v-for="(item, i) in imgs" :key='i' >
                <img :class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="item" alt=""> <span @click="del(i)"><i class="el-icon-delete"></i></span>
            </div>
        </div>
        <div class="img-file" v-if= 'imgs.length<size'>
             <img-upload  @fileChange='fileChange' multiple='true'> <i class="el-icon-plus avatar-uploader-icon"></i></img-upload>
        </div>
    </div></template><script>import ImgUpload from '@/components/ImgUpload'export default {
  name: 'imgFiles',
  props: {
    size: {
      type: Number,      default: 3
    }
  },
  data() {    return {
      imgs: [],
      imgfiles: []
    }
  },
  components: {
    ImgUpload
  },
  methods: {
    fileChange(files) {      console.log(files)      const _this = this
      for (let i = 0; i < files.length; i++) {        const reader = new FileReader()        this.imgfiles.push(files[i])
        reader.readAsDataURL(files[i])
        reader.end = function() {          console.log(this.result)
          _this.imgs.push(this.result)
        }
      }      this.imgsChange()
    },
    del(i) {      this.imgfiles.splice(i, 1)      this.imgs.splice(i, 1)      this.imgsChange()
    },
    imgsChange() {      this.$emit('imgsChange', this.imgfiles)
    }
  }
}</script><style scoped lang="scss" rel="stylesheet/scss">
  .img-box{
    position: relative;
    border:1px solid #e6e6e6;
    margin-right: 20px;
    padding-top:30px;
    background: #f6f6f6;
    img{
      width: 160px;
    }
    span {
      position: absolute;
      top:5px;
      right: 10px;
      color: red;
    }
}
.img-file{
    height: 190px;
    width: 190px!important;
    display: flex;
    align-items: center;
    font-size: 30px;
    text-align: center;
    border: 1px #e6e6e6 dashed;
    justify-content: center;
    margin: 0;
}</style>

原文出处:https://www.cnblogs.com/yuanchenchun/p/9492112.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消