• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  在一般的函数中:

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

  this.setData是正确的。

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

 1 formSubmit: function (e) {
 2     wx.request({
 3       method: 'POST',
 4       header: header,
 5       url: url,
 6       dataType: 'json',
 7      success: function (res) {
 8            this.setData({
 9               data1: true
10             })
11       }
12     })
13 }

  或者执行定时任务时候:

 1 var si = setInterval(function () {
 2         that.setData({
 3           sendVerifyingCodeText: curCount + '秒后重新获取'
 4         });
 5         that.setData({
 6           sendSmsCodeDisable: true
 7         });
 8         curCount--;
 9         if (curCount <= 0) {
10           that.setData({
11             sendSmsCodeDisable: false
12           }),
13           clearInterval(si);
14         }
15       }, 1000);

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

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

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

1 that.setData({
2               data1: true
3             })

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
uni-app实现navigateBack返回修改前一页面数据(H5、APP、小程序) ...发布时间:2022-07-18
下一篇:
小程序发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap