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

时间:2023-03-08 17:44:03
微信小程序 this.setData is not a function

  在一般的函数中:

 bindFaChange1: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.setData({
index1: e.detail.value
})
}

  this.setData是正确的。

  但当在函数中有个请求(wx.request)时:

 formSubmit: function (e) {
wx.request({
method: 'POST',
header: header,
url: url,
dataType: 'json',
success: function (res) {
this.setData({
data1: true
})
}
})
}

  或者执行定时任务时候:

 var si = setInterval(function () {
that.setData({
sendVerifyingCodeText: curCount + '秒后重新获取'
});
that.setData({
sendSmsCodeDisable: true
});
curCount--;
if (curCount <= 0) {
that.setData({
sendSmsCodeDisable: false
}),
clearInterval(si);
}
}, 1000);

  这样会报错误:this.setData is not a function.

  这个在新的函数内的this代表的是这个函数体,所有是没有this.setData。这个类似java中的this指的是当前对象,但是javascript是以函数为主体的,所以就是this在函数内部就当前函数。修改未:

  解决方法就是 :在请求(wx.request)或者新的非当前js的方法外面添加:var that=this;然后用:

 that.setData({
data1: true
})