微信小程序中已经将此功能封装成为一个函数
**

一、函数

wx.previemImage(Object,Object)

1、参数

Object object

属性 类型 默认值 必填 说明 最低版本
urls Array. 是 需要预览的图片链接列表。2.2.3 起支持云文件ID。
showmenu boolean true 否 是否显示长按菜单 2.13.0
current string urls 的第一张 否 当前显示图片的链接
success function 否 接口调用成功的回调函数
fail function 否 接口调用失败的回调函数
complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)

urls: 表示图片的url列表(Array)
current: 表示默认打开的图片url

二、代码示例

1、WXML部分

  1. <view class="swiper_container">
  2. <swiper autoplay="{{true}}" circular="{{true}}" interval="4000" indicator-dots="{{true}}" indicator-color="rgba(0, 0, 0, .3)" indicator-active-color="#000000">
  3. <!---
  4. 1、bindtap="handlePreviewImage" => 给swiper-item 绑定了点击事件
  5. 2、事件的回调函数是handlePreviewImage()
  6. 3、触发点击事件的时候就向回调函数中传入触发点击事件 item 的图片url
  7. -->
  8. <swiper-item wx:for="{{goodsObj.pics}}" wx:key="pics_id" bindtap="handlePreviewImage" data-url="{{item.pics_mid}}">
  9. <image mode="widthFix" src="{{item.pics_mid}}" />
  10. </swiper-item>
  11. </swiper>
  12. </view>

2、JavaScript部分

  1. /*构造图片的url数组*/
  2. /*
  3. 1、向接口发送请求,获取到的数据保存在goodsObj中
  4. 2、使用map构造出图片的urls数组
  5. */
  6. /*回调函数的实现*/
  7. handlePreviewImage(e){
  8. /*
  9. 1、对 this.goodsObj.pics 这个数组使用map 构造出urls函数
  10. 2、将 v.pics_mid 作为数组urls中的元素
  11. 3、urls中存放的就是轮播图中所有图片的url
  12. */
  13. const urls = this.goodsObj.pics.map(v => v.pics_mid);
  14. // 参数e中包含了传入进来的url参数 可以从中获取到触发点击事件的图片的url 存入 urlNow 中
  15. // 否则每次点击图片放大的都是第一张
  16. const urlNow = e.currentTarget.dataset.url;
  17. wx.previewImage({
  18. current: urlNow,
  19. urls:urls,
  20. });
  21. },