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

一、函数

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. },