我的data里的数据定义如下:
data: {
images: [], //保存图片
},
① onLoad函数当从后台拿到图片数据时,用了this.setData赋值给images以更新页面显示:
const downloadTask = wx.downloadFile({
url: '略',
success: function (res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
console.log(res)
if (res.statusCode === 200) {
that.setData({
'images[0]': res.tempFilePath
})
}
}
})
② 但因为业务逻辑是用户可再次上传新照片,所以此时用户上传的新照片也用this.setData赋值:
uploadImg: function () {
var that = this
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
console.log(res.tempFilePaths)
that.setData({
// images: that.data.images.concat(res.tempFilePaths)
'images[0]': res.tempFilePaths
})
},
})
},
然后用户提交数据的函数用了wx.uploadFile:
modifyCourierForm: function (res) {
var that = this
for (var i = 0; i < that.data.images.length; i++) {
wx.uploadFile({
url: '略',
filePath: that.data.images[i],
name: 'images',
formData: {
},
success: function (res) {
}
})
}
},
问题在于,当页面加载后,会进行一次赋值(从后台调出用户保存的图片)
that.setData({
'images[0]': res.tempFilePath
})
若用户无再上传新照片也就是没有在setData进行赋值的话(只执行了①代码未执行②代码), filePath: that.data.images[i],的路径是正确的,提交时控制台输出的数据是这样的
若用户进行了上传新照片的操作,也就是对image[0]进行两次赋值操作(①和②块的代码都有执行),那么提交时控制台是
为啥赋值两次下标为0的位置保存的就是数组了?而且提交路径须改成filePath: that.data.images[i][0]才可以正确提交?是我的赋值方法写的不对吗?
小白刚入门不久求教。