问题:
client.on('message', function (topic, message, packet) {
console.log("packet", packet.payload.toString())
if(topic.toString().indexOf("voltage") != -1)
{
//错误1
this.setData(
{
voltage:message.toString()
}
)
//错误2
this.data.device.voltage=message.toString()
}
}
-
使用this.data.XXX,报错:XXX of undifined
-
使用this.setData({}),报错
原因分析:
小程序在异步请求(我在这里向mqtt服务器请求了数据),之后直接this.setData({}) 是不起作用的,因为this丢失,需要在请求之前定义that = this, 使用that.setData({}) 才可以,注意,that不能写成全局变量,一定要写在方法里,并且是异步请求之前!
解决方法:
- 在请求之前,定义一个that=this
var that=this
- 使用that.setData()或者that.data.XXX
client.on('message', function (topic, message, packet) {
console.log("packet", packet.payload.toString())
if(topic.toString().indexOf("voltage") != -1)
{
that.data.device.voltage=message.toString()
}
}