<image class='imgList' wx:for="{{imgs}}" wx:for-item="item" src='{{item}}' data-index="{{index}}" wx:key="*this" bindtap="previewImg">
<icon class='imgCancel' type="clear" size='25' data-index="{{index}}" catchtap="deleteImg"></icon>
</image>
<image src='../../images/ic_pic.png' bindtap='addImg' wx:if="{{isShowAdd}}" ></image>
</view>
wxss:
.imgBox{
padding: 25rpx 0rpx;
}
.imgBox image{
width: 200rpx;
height: 200rpx;
margin-right: 15rpx;
}
.imgBox .imgList{
position: relative;
}
.imgBox .imgList .imgCancel{
position: absolute;
top: 0rpx;
right: 0rpx;
}
js:countNum 和 max值可根据自己的需求更改,但是二者的值须相同
Page({
data: {
isShowAdd:true,
imgs: [],
countNum:3, //设定一次性选择图片的上限值
max:3 //设定上传图片总数的上限值,与countNum相同
},
//添加图片
addImg: function (e) {
var that = this;
wx.chooseImage({
count: that.data.countNum, // 上传图片上限值
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: res => {
wx.showToast({
title: '正在上传...',
icon: 'loading',
mask: true,
duration: 1000
})
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
var tempFilePaths = res.tempFilePaths;
var imgs=that.data.imgs;
for (var i = 0; i < tempFilePaths.length; i++) {
if (imgs.length >= that.data.max) {
that.setData({
imgs: imgs
});
return false;
} else {
imgs.push(tempFilePaths[i]);
//上传图片达到上限count值时,隐藏添加按钮
if (imgs.length >= that.data.max){
that.setData({
isShowAdd: false
});
}
}
}
that.setData({
imgs: imgs,
countNum: that.data.max-imgs.length //每增加一张图片,动态计算还可添加照片的数量
})
}
})
},
// 预览图片
previewImg: function (e) {
//获取当前图片的下标
var index = e.currentTarget.dataset.index;
//所有图片
var imgs = this.data.imgs;
wx.previewImage({
//当前显示图片
current: imgs[index],
//所有图片
urls: imgs
})
},
// 删除图片
deleteImg: function (e) {
console.log("删除图片")
var imgs = this.data.imgs;
var index = e.currentTarget.dataset.index;
imgs.splice(index, 1);
this.setData({
imgs: imgs,
countNum: this.data.max-imgs.length
})
if(imgs.length<this.data.max){
this.setData({
isShowAdd: true
})
}
},
})
效果展示:
1 )图片未达上限
2 )图片已达到上限,隐藏添加按钮(ic_pic.png)