問題:
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()
}
}