微信小程序报错:this.setData is not a function的解决办法

 更新时间:2017年09月27日 15:41:50   作者:tangxiujiang  
这篇文章主要介绍了微信小程序报错:this.setData is not a function的解决办法的相关资料,希望通过本文能帮助到大家解决这样类似的问题,需要的朋友可以参考下

微信小程序 报错: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>); 
 } 
 } 
 }); 
} 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 深入浅出探究JavaScript中的async与await

    深入浅出探究JavaScript中的async与await

    任意一个名称都是有意义的,先从字面意思来理解。async 是“异步”的简写,而 await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。下文将带你深入探究JavaScript中的async与await
    2021-09-09
  • JavaScript前端面试组合函数

    JavaScript前端面试组合函数

    这篇文章主要为大家介绍了JavaScript前端面试组合函数详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • element弹窗表格的字体模糊bug解决

    element弹窗表格的字体模糊bug解决

    这篇文章主要为大家介绍了element弹窗表格的字体模糊bug解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 微信小程序 es6-promise.js封装请求与处理异步进程

    微信小程序 es6-promise.js封装请求与处理异步进程

    这篇文章主要介绍了微信小程序 es6-promise.js封装请求与处理异步进程的相关资料,需要的朋友可以参考下
    2017-06-06
  • JS中this的4种绑定规则详解

    JS中this的4种绑定规则详解

    如果你学过面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不用看这篇文章,this既不指向函数自身,也不指函数的词法作用域,具体怎么使用JS中的this,JS中的this绑定规则又是什么?
    2020-02-02
  • 帮你提高开发效率的JavaScript20个技巧

    帮你提高开发效率的JavaScript20个技巧

    JavaScript确实是一门很好的开发语言。对于给定的问题,可以有不止一种方法来达到相同的解决方案。在这篇文章中,我们将讨论最快速的方法
    2021-06-06
  • 微信小程序 MD5的方法详解及实例代码

    微信小程序 MD5的方法详解及实例代码

    这篇文章主要介绍了微信小程序 MD5的方法详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • 一个很简单的办法实现TD的加亮效果.

    一个很简单的办法实现TD的加亮效果.

    一个很简单的办法实现TD的加亮效果....
    2006-06-06
  • 前端的状态管理(下)

    前端的状态管理(下)

    这篇文章主要介绍了前端的状态管理,续上篇文章内容,今天将从 Redux 入手逐渐拓展,需要的小伙伴可以参考一下哟
    2021-10-10
  • Astro Islands静态页面交互式UI组件

    Astro Islands静态页面交互式UI组件

    这篇文章主要为大家介绍了Astro Islands静态页面交互式UI组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论