微信小程序踩坑系列(1)——thirdScriptError TypeError: this.setData is not a function

复仇灬小林 2018年09月23日

讲道理,我这个月写小程序踩的坑比之前加起来都多,真的是醉了,我觉得都可以写个系列了。。

首先就是标题描述的这个问题了,之前写的时候因为没涉及到网络请求部分,所以没有出现这个问题,现在调用php访问数据库需要使用wx.request就会出现这个问题。

问题部分代码(非实际项目源代码):

wx.request({
  url: url,
  success: function (res) {
    console.log(res.data)
    this.setData({ itemList: res.data })
  }

报错提示:

thirdScriptError TypeError: this.setData is not a function

研究了半天也没发现哪有问题,百度之后才发现不止我一个人踩坑,这里在处理网络返回数据时,不能直接使用this。 要事先定义一个this的代理。 比如:var that = this

修正后的代码:

var that = this
………………
wx.request({
  url: url,
  success: function (res) {
    console.log(res.data)
    this.setData({ itemList: res.data })
  }
expand_less