小程序的js函数中,一般第一句就是var that=this,那么此语句的必要性是什么呢?下面用一段代码来解释这个问题
Page({ //页面的初始数据 loadUsers: function () { var that=this data:{ questionId:null; title:null } wx.request({ url:'http://0.0.0.0:5000/question/type=2/2', method:'get', success:function(res){ console.log(res.data) var d=res.data['data'] that.setData({ questionId:d['questionId'], title:d['title']}) console.log(this.data.questionId) } }) },
这段程序报错:Cannot read property 'questionId' of undefined
这是因为在javascript语言中,this
代表着当前的对象,它在程序中随着执行的上下文随时会变化。当原本的loadUsers函数中调用其它接口比如wx.request或success:function时,this就不再代表loadUsers函数,因此就不能由this找到之前定义的data。this包含了当时页面的初始值,state,以及当前你自己定义的函数。解决方法就是用一个that记录loadUsers函数中的这些内容,从而能在接口中使用这些值。