微信小程序this.setData({})無效


問題:

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()
      }
 }
  1. 使用this.data.XXX,報錯:XXX of undifined

  2. 使用this.setData({}),報錯

原因分析:

小程序在異步請求(我在這里向mqtt服務器請求了數據),之后直接this.setData({}) 是不起作用的,因為this丟失,需要在請求之前定義that = this, 使用that.setData({}) 才可以,注意,that不能寫成全局變量,一定要寫在方法里,並且是異步請求之前!

解決方法:

  1. 在請求之前,定義一個that=this
var that=this
  1. 使用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()
      }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM