美文网首页
使用element实现图片上传

使用element实现图片上传

作者: sweetBoy_9126 | 来源:发表于2019-04-17 23:39 被阅读0次

    需求:没有图片的时候按钮显示上传图片,有的时候显示重新上传,当点击按钮的时候上传成功后会替换掉原来的图片

    <el-table-column prop="imgUrl" label="*轮播图片" width="280" align="center">
            <template slot-scope="scope">
              <span>
                <el-upload
                  class="avatar-uploader"
                  :action="uploadUrl"
                  :headers="uploadHeader"
                  :show-file-list="false"
                  :limit="1"
                  :on-success="handleAvatarSuccess"
                >
                  <img :src="scope.row.imgUrl" class="avatar firstImg">
                  //因为我们不能对upload组件里的事件传入当前的scope,
    //所以我们只能在点击button的时候触发一个事件,把当前的index传进去,
    //然后成功后修改tabledata[index].imgUrl即可
                  <el-button size="small" type="primary" @click="uploadImgDisplay(scope.$index)">{{scope.row.imgUrl ? '重新上传' : '图片上传'}}</el-button>
                </el-upload>
              </span>
            </template>
          </el-table-column>
    data(){
      return {
        //这个tabledata就是我绑定的table里的数据
        tabledata: [],
        uploadUrl: process.env.BASE_API + '/upload/uploadPic'
      }
    }
    methods: {
      uploadImgDisplay(index) {
        //点击按钮之后把当前这一列的索引值赋给一个data
          this.currentIndex = index
        },
      handleAvatarSuccess(response) {
          //上传成功后在table绑定的数据中找到当前索引下的图片链接修改
          this.tabledata[this.currentIndex].imgUrl = response.data
          //这里之所以要获取img是因为我们新建的时候虽然拿到了新的图片的url,
    //但是当前img的src还是空的,所以我们就需要每次成功后通过dom拿到第一行的img(因为我每次新增都是添加到第一行)
    //然后把它的src修改为最新的
          const firstImg = document.querySelector('.firstImg')
          firstImg.src = response.data
        }
    }
    

    相关文章

      网友评论

          本文标题:使用element实现图片上传

          本文链接:https://www.haomeiwen.com/subject/nulawqtx.html