微信小程序报错:this.setData is not a function的解决办法
程序员文章站
2022-04-09 21:47:01
微信小程序 报错:this.setdata is not a function
在page中定义的代码如下,代码会报错:this.setdata is not a f...
微信小程序 报错:this.setdata is not a function
在page中定义的代码如下,代码会报错:this.setdata is not a function
<strong> pasteencryptedtext:function()</strong>{ let decryptedpass = this.data.decryptedpassword; if (decryptedpass == '' ){ wx.showtoast({ title: '请先输入解密密码', mask: true, success: function (res) { settimeout(function () { wx.hidetoast(); }, 4000); }, }); return; }else{ wx.getclipboarddata({ <strong>success: function (res)</strong> { if ( res.data == '' ){ wx.showtoast({ title: '剪贴板没有内容', mask: true, success: function (res) { settimeout(function () { wx.hidetoast(); }, 4000); }, }) }else{ console.log(decryptedpass); console.log(res.data); <strong>this.setdata({ encryptedtextdecode: res.data, originaltextdecode: desencrypteddecrypted.decrypt(res.data, decryptedpass), });</strong> console.log(this.data.originaltextdecode); } } }); } }
问题分析:在函数 pasteencryptedtext()里面嵌套调用另一个函数 wx.showtoast(),而setdata()是在wx.showtoast()中调用的,此时this.setdata()
中的this不是page,而是wx.showtoast()这个对象了
解决方法:
<strong> 在函数pasteencryptedtext()一开始处将this对象保存:</strong>let that = this;
pasteencryptedtext:function(){ let decryptedpass = this.data.decryptedpassword;
<strong>let that = this;</strong> 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: '剪贴板没有内容', mask: true, success: function (res) { settimeout(function () { wx.hidetoast(); }, 4000); }, }) }else{ console.log(decryptedpass); console.log(res.data); <strong> that.setdata</strong>({ encryptedtextdecode: res.data, originaltextdecode: desencrypteddecrypted.decrypt(res.data, decryptedpass), }); console.log(<strong>that.data.originaltextdecode</strong>); } } }); }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!
上一篇: Vue如何从1.0迁移到2.0