在一般的函数中:
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 })