回调功能不会更改用户界面

时间:2019-02-10 14:14:41

标签: javascript jquery html5 mqtt

我正在编写一个MQTT应用程序,每个显示主题的UI元素都有一个类。但是,尽管我正确地调用了该方法,但是当我收到正确的主题时,我的UI却没有更新。

因此,一个类的定义如下:

class Solltemperatur {
    constructor() {
    this.obj = $('#solltemperatur').first();
    this.max = 130;
    this.min = 0;
    this.set(0);
  }

  set(vStr) {
      this.value = parseFloat(vStr).toFixed(1);
      console.log("Empfange: " + this.value.toString());      
      $(this.obj).find('.stat-digit').first().text(this.value.toString() +"°C");
      $(this.obj).find('.progress-bar').first().css( "width", (this.value/this.max*100).toFixed(1) + "%" );
  }

  get() {
      this.str = $(this.obj).find('.stat-digit').first().text().replace('°C','');
      return parseFloat(this.str);
  }
}

我可以使用设置方法更改值。

在我的MQTT接收方法中,我正在爬取一系列主题及其链接的方法,以在类中运行这些方法。 添加一个新主题就像:

addSubscription("LightIntensity/x", solltemperatur.set); 

function addSubscription(top, func)
{
    arraySubscriptions.push({topic: top, f: func}); 
}

抓取是

//called when a message arrives
function onMessageArrived(message) {
    var tmpTopic = message.destinationName.replace(subscribeTopic, "");
    console.log("messageArrived:" + tmpTopic + " - " + message.payloadString);

    var found = arraySubscriptions.filter(function(element) {
          return element.topic == tmpTopic;
        });


    found.forEach(function(element) {
        element.f(message.payloadString);
        console.log(element);
        });

}

因此,当收到主题“ LightIntensity / x”时,将正确调用该方法。但是该调用不会影响我的GUI。

你知道我的问题是什么吗?

0 个答案:

没有答案