专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2024-07-26 00:29:21 基础教程 15 ℃

在一般的函数中:

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

this.setData是正确的。

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

但当在函数中有个请求(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
 })

Tags:

最近发表
标签列表