收藏
回答

chooseImage自动恢复修改过的变量,并且打印错误

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug chooseImage 工具 7.0.3 2.6.0

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

最后一次编辑于  02-20
回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    02-20

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

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

    02-20
    赞同 1
    回复 3
    • __门门碎钞机
      __门门碎钞机
      02-20

      chooseImage会触发 onHide onShow,那我就知道为什么了,为什么会有这种操作。。。

      02-20
      回复
    • 卢霄霄
      卢霄霄
      02-20回复__门门碎钞机

      从webview环境进入到了原生环境,对小程序来说,就是hide了

      02-20
      回复
    • __门门碎钞机
      __门门碎钞机
      02-20回复卢霄霄

      原来如此,谢谢大佬

      02-20
      回复