zoukankan      html  css  js  c++  java
  • 微信小程序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()
          }
    }
    
  • 相关阅读:
    iOS_SN_地图的使用(3)
    iOS_SN_地图的使用(2)
    iOS_SN_百度地图基本使用(1)
    iOS_SN_CoreData(二)
    iOS_SN_CoreDate(一)封装使用
    iOS_SN_UITableView的优化
    阿里云 单表备份 恢复
    svn 彻底删除文件、文件夹
    @去除
    服务器安全保护
  • 原文地址:https://www.cnblogs.com/baoweijie99/p/14128371.html
Copyright © 2011-2022 走看看