正常情况下在 ios 上,使用for循环能多张图片显示,但是在vue中使用for循环的话,只能单次选择一张显示一张,选择多张的话就无法显示图片了。
if(window.__wxjs_is_wkwebview) { //判断ios是不是用的 wkwebview 内核
// ios 转为 base 64
for(let i = 0; i < localIds.length; i++) {
_this.wx.getLocalImgData({
localId: res.localIds[i],
success: function(res) {
let localData = res.localData;
localData = localData.replace('jgp', 'jpeg');
_this.previewImg.push(localData);
},
fail: function() {
Toast('选择失败');
}
})
_this.uploadImg(res.localIds[i]);
}
} else {
localIds.forEach(item => {
_this.previewImg.push(item);
_this.uploadImg(item);
})
}
已解决,我个人认为这属于在for循环里添加了一个异步请求类型的,所以我让他每次执行完毕后再执行下一次操作,其中用到了async 和 await,将异步变为同步去执行。
下面是成功代码:
方法都是写在 methods 中的:
chooseImg() {
},
// 定义 ios 中使用的选择图片方法
// this.uploadImg(item) 是写的上传图片方法,不用管,这里讲的是选择图片
async iosPreview(localIds) {
},
// 定义 ios 中使用的选择图片方法
// previewImg 是vue的data方法中定义的用来存放选择成功的图片的
readImage(item) {
}