我通过云函数获取到openId后,通过OpenId获取到了用户的姓名和性别,但是用setData给index的变量赋值时,不成功,请教各位大师,这是什么原因?代码如下:
wx.cloud.init()
wx.cloud.callFunction({
name: 'test',
complete: res => {
let open_id=res.result.userInfo.openId
console.log("open_id",open_id);
const db = wx.cloud.database()
db.collection('UserInfo').where({
OpenId: open_id
})
.get({
success: function (res) {
console.log("自己通过openid取得的信息",res.data);
if (res.data[0].sex == '1') {
this.setData({
sexC: "先生1"
})
} else {
this.setData({
sexC: "女士"
})
}
this.setData({
UserName: res.data[0].UserName,
UserType: res.data[0].UserType,
UserInfo: res.data[0]
})
//return res
},
fail: err => {
reject(err)
}
})
你每次在方法下边第一行,声明一下 var that = this;如果方法里还有方法,依次类推,声明的变量名不要重复。
在方法开头定义 let that = this; 然后里面使用that,这个数指向问题
控制台是否有报错
使用 const _this= this; 的方式是为了在回调函数中访问外部函数的 this,因为在箭头函数或通过 const _this= this; 缓存的方式下,_this会捕获到正确的 this 上下文。