收藏
回答

compressImage里setData无效

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.compressImage 客户端 7.0 2.3.2
wx.compressImage({
          src: res.tempImagePath, // 原图片路径
          quality: 50, // 压缩质量,
          complete: compRes => {
            console.log(compRes.tempFilePath)
            this.setData({
              'form.compImg': compRes.tempFilePath
            })
          }
        })

console.log(compRes.tempFilePath)能打印出来正确的临时路径,但是往form.compImg里赋值就是一直时undefined??


回答关注问题邀请回答
收藏

3 个回答

  • 肖宇
    肖宇
    2019-03-21
    onTakePhoto() {
        var that = this;
        const ctx = wx.createCameraContext();
        ctx.takePhoto({
          quality: 'high',
          success: (res) => {
            wx.compressImage({
              src: res.tempImagePath, // 原图片路径
              quality: 50, // 压缩质量,
              complete: compRes => {
                console.log(compRes.tempFilePath)
                that.setData({
                  'form.compImg': compRes.tempFilePath
                })
              }
            })
            that.setData({
              src: res.tempImagePath,
              'form.img': res.tempImagePath
            })
            console.log('compImg:', that.data.form.compImg)
            console.log('orignImg:', that.data.form.img)
          }
        })
      }

    异步回调里面 setData 不能用this,在回调外把this赋给一个变量

    2019-03-21
    有用
    回复
  • 周立人
    周立人
    2019-03-13

    that=this

    //......



    that.setData({

    //.....

    2019-03-13
    有用
    回复
  • 2019-03-13

    我是拍照后,对图片进行压缩再上传的


    onTakePhoto() {
        const ctx = wx.createCameraContext();
        ctx.takePhoto({
          quality: 'high',
          success: (res) => {
            wx.compressImage({
              src: res.tempImagePath, // 原图片路径
              quality: 50, // 压缩质量,
              complete: compRes => {
                console.log(compRes.tempFilePath)
                this.setData({
                  'form.compImg': compRes.tempFilePath
                })
              }
            })
            this.setData({
              src: res.tempImagePath,
              'form.img': res.tempImagePath
            })
            console.log('compImg:', this.data.form.compImg)
            console.log('orignImg:', this.data.form.img)
          }
        })
      }



    2019-03-13
    有用
    回复 1
    • 🐾陈昕妤
      🐾陈昕妤
      2019-03-13

      是不是里面不能直接使用this

      在最外面用变量试试呢?

      2019-03-13
      回复
登录 后发表内容