chooseImage自动恢复修改过的变量,并且打印错误
发布于 6 年前 作者 yan94 10045 次浏览 来自 问答

以下是在开发者工具打印的结果,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本身有网络图片的原始数据,就会出现该问题。

1 回复

对于console的问题,你可以百度下 console.log值不对

你页面的onShow里对imgArr进行的修改吗?chooseImage会触发 onHide onShow

回到顶部