Element-ui中的el-image的图片预览功能(preview-src-list)

90 篇文章 1 订阅
  1. 今天用了element-ui中的图片预览功能,但是它的图片预览功能只能预览事先定义的图片,与我的业务功能完全不符,我的业务功能是当点击图片时,就预览当前点击的图片。
  2. 所以我将其修改了一下,功能就是当点击一行表格中的一个图片时,这个图片就被预览了,代码很简单,就是直接复制element-ui中的图片预览组件就行
<el-table-column label="员工照片" align="center">
   <template slot-scope="scope">
     <el-image
       style="width: 100px; height: 100px"
       :src="scope.row.staffIcon" 
       :preview-src-list="srcList"
       @click="vbs(scope.row.staffIcon)"
     >
     </el-image>
   </template>
</el-table-column>
  1. 上面的这段代码与element-ui中的没有区别,唯一的区别就是我设置了一个点击事件click。
  2. 在下面的js中,定义srcList变量。(这个在srcList[]里面必须要加上一张图片,才可以(因为srcList[]里面如果不加图片的话,我们第一次点击是弹不出预览框的,element-ui文档上也是当有图片时才会弹出来预览的框。我们第二次点击的时候,有了第一次点击时候的图片,就可以弹出预览框了,但是也仅限于页面不刷新,刷新之后我们还需要点击两次才能弹出预览框)所以我们这里在srcList[]里面必须填写一个图片地址,随便图片地址就行,你们也可以填写我的图片!)
srcList: [
        "https://elevator4s-oss.oss-cn-hangzhou.aliyuncs.com/2021/05/07/b632db6a837f46e0950670277fa9e5e5multipartFile.png"
      ],
  1. 在下面js方法中,给srcList变量做添加,因为其为Array,所以添加时应该用push(这是一个方法,写在methods里面,这样写的思路是每次点击图片预览的时候,都将当前srcList清空,再将当前点击的照片的路径给他加上。如果不清空,就会存进去好多图片,直到页面再次刷新)
vbs(val) {
      this.srcList = []
      this.srcList.push(val)
    }
  1. 下面是实现效果。
    (1)这里可以看到我点击的“贾玲”这行,出现的是贾玲的图片(点击的那行是深颜色的)
    在这里插入图片描述(2)这里可以看到当我点击“王俊凯”这行,出现的是王俊凯的照片在这里插入图片描述

简单方法(评论区超网888网友)
当时看到这个方法之后,就感觉自己的方法有点复杂了,所以我把这个方式也写在下面,两种方法都可以实现,可以自己斟酌选择哪个:

<el-table-column label="员工照片" align="center">
   <template slot-scope="scope">
     <el-image
       style="width: 100px; height: 100px"
       :src="scope.row.staffIcon" 
       :preview-src-list="[scope.row.staffIcon]"
       @click="vbs(scope.row.staffIcon)"
     >
     </el-image>
   </template>
</el-table-column>

一切的事情或人,都有他出现的原因,不要因为眼前的糟心事而沮丧,学着接受,学着克服,未来可期!

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,我可以为你提供代码示例,但在开始前,请确认你已经安装了element-ui和vue。 首先,需要在你的组件引入element-ui的Upload组件和Message组件: ```javascript <template> <div> <el-upload class="upload-demo" ref="upload" action="/upload" :on-preview="handlePreview" :on-remove="handleRemove" :before-upload="beforeUpload" multiple :file-list="fileList"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">jpg/png文件,文件大小不能超过2MB</div> </el-upload> </div> </template> <script> import { Message, Upload } from 'element-ui'; export default { components: { Upload }, data() { return { fileList: [] } }, methods: { handlePreview(file) { console.log(file); }, handleRemove(file, fileList) { const index = fileList.indexOf(file); fileList.splice(index, 1); }, beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPG) { Message.error('上传图片只能是 JPG/PNG 格式!'); } if (!isLt2M) { Message.error('上传图片大小不能超过 2MB!'); } return isJPG && isLt2M; } } } </script> ``` 在这个示例,我们使用了`<el-upload>`标签来创建一个上传组件,并设置了一些属性来配置它的行为。其,`fileList`属性用于存储上传的文件列表,`multiple`属性表示可以同时上传多个文件,`before-upload`属性用于验证上传的文件是否符合要求,`on-preview`属性用于预览上传的图片,`on-remove`属性用于删除上传的文件。 在`beforeUpload`函数,我们使用了element-ui的`Message`组件来提示用户上传的文件是否符合要求。如果不符合要求,上传会被阻止。在`handleRemove`函数,我们使用了`fileList`数组的`splice()`方法来删除文件。在`handlePreview`函数,我们将文件对象打印到控制台上,你可以在这里进行图片预览操作。 希望这个示例能够对你有所帮助!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值