以下是在开发者工具打印的结果,imgArr的原始数据是:
deleteImage: function (e) { //删除图片 var target = e.currentTarget.dataset; var index = target.index; this .data.imgArr.splice(index, 1); console.log( 'this.data.imgArr2222' , this .data.imgArr) this .setData({ imgArr: this .data.imgArr }) console.log( 'this.data.imgArr33333' , this .data.imgArr) }, chooseImage: function () { //选择图片 var _self = this ; console.log( ' _self.data.imgArr.length44444' , _self.data.imgArr.length) let count = 4 - _self.data.imgArr.length; if (count <= 0) { util.showModal( '最多只能上传三张照片!' ) return ; } console.log( ' _self.data.imgArr555555' , _self.data.imgArr) wx.chooseImage({ count: count, // 默认9 sizeType: [ 'compressed' ], // 可以指定是原图还是压缩图,默认二者都有['original', 'compressed'] sourceType: [ 'album' , 'camera' ], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片 console.log( 'chooseImage7777777' , _self.data.imgArr) for (let i = 0; i < res.tempFilePaths.length; i++) { console.log( 'xxxxxxxx' ) _self.data.imgArr.push(res.tempFilePaths[i]) } console.log( 'chooseImage8888888' , _self.data.imgArr) _self.setData({ imgArr: _self.data.imgArr }) console.log( 'chooseImage' , _self.data.imgArr) } }) }, |
先执行了删除中间那张图片,然后在添加。
chooseImage777777外边写的是(3)但开打来看却有四个,并且是在原始数据上push进了我新选择的图片,之后打印的数据都跟777777的一样,除了括号内的有问题。
执行了wx.chooseImage之后的问题:
1.恢复了我之前在deleteImage中删除的第二条数据,并push了一条新的
2.打印顺序不对,先打印的777777再执行push,但是打印出来的777777里面却是已经push的数据(虽然这个数据本身就是错的)
尝试:imgArr如果没有原始数据,chooseImage正常执行,但是imgArr本身有网络图片的原始数据,就会出现该问题。
对于console的问题,你可以百度下 console.log值不对
你页面的onShow里对imgArr进行的修改吗?chooseImage会触发 onHide onShow
chooseImage会触发 onHide onShow,那我就知道为什么了,为什么会有这种操作。。。
从webview环境进入到了原生环境,对小程序来说,就是hide了
原来如此,谢谢大佬