微信小程序 报错:this.setData is not a function

微信小程序 报错:this.setData is not a function

在page中定义的代码如下,代码会报错:this.setData is not a function

pasteEncryptedText:function(){
    let decryptedPass = this.data.decryptedPassword;
    if (decryptedPass == '' ){
      wx.showToast({
        title: '请先输入解密密码',mask: true,success: function (res) {
          setTimeout(function () {
            wx.hideToast();
          },4000);
        },});
      return;
    }else{
      wx.getClipboardData({
        success: function (res) {
          if ( res.data == '' ){
            wx.showToast({
              title: '剪贴板没有内容',success: function (res) {
                setTimeout(function () {
                  wx.hideToast();
                },4000);
              },})
          }else{
            console.log(decryptedPass);
            console.log(res.data);
            this.setData({
              encryptedTextDecode: res.data,originalTextDecode: desEncryptedDecrypted.decrypt(res.data,decryptedPass),});
            console.log(this.data.originalTextDecode);
          }
        }
      });
    }
  }

问题分析:在函数 pasteEncryptedText()里面嵌套调用另一个函数 wx.showToast(),而setData()是在wx.showToast()中调用的,此时this.setData()中的this不是page,而是wx.showToast()这个对象了

解决方法:   在函数pasteEncryptedText()一开始处将this对象保存:let that = this;

pasteEncryptedText:function(){
    let decryptedPass = this.data.decryptedPassword;
    let that = this;
    if (decryptedPass == '' ){
      wx.showToast({
        title: '请先输入解密密码',})
          }else{
            console.log(decryptedPass);
            console.log(res.data);
            that.setData({
              encryptedTextDecode: res.data,});
            console.log(that.data.originalTextDecode);
          }
        }
      });
    }
  }



相关文章

概述 消息能力是小程序能力中的重要组成,我们为开发者提供了...
判断H5页面环境在微信中还是小程序中 用小程序提供的wx.mini...
wx.reLaunch和wx.navigateTo,wx.navigateTo的区别 2019-03-...
微信小程序如何从数组里取值_微信小程序 传值取值的几种方法...
H5项目接入微信授权登录,通过 UA 区分微信还是普通浏览器:...
微信小程序获取data-xx=""属性的值,自定...