Pepper: передать переменную из Python в веб-JS и отобразить ее в HTML - PullRequest
0 голосов
/ 03 января 2019

Я хочу передать данные из моего хореографа в webjs, и переданное значение будет отображаться в html через javascipt. Я могу успешно пройти его, но проблема в том, что он будет отображаться в течение 1-3 секунд. Я сделал это правильно?

Вот мой код от хореографа (python):

def onLoad(self):
    #put initialization code here
    pass

def onUnload(self):
    self.memory = None
    #put clean-up code here
    pass

def onInput_onStart(self):
    data = ['apple','mango','juice']
    self.memory.raiseEvent("myData", data)

def onInput_onStop(self):
    self.onUnload() 
box is stopped
    self.onStopped() 

А вот код моего javaschipt при получении данных из перца:

var  session = new QiSession();

$(document).ready(function(){
getData();
});
function getData(){
session.service('ALMemory').then(function(ALMemory){
  ALMemory.subscriber("myData").then(function(subscriber) {
    subscriber.signal.connect(function(data){
    "display to html here"
    });
    });
});
}

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Ваш код Choregraphe полон ошибок и бесполезных шаблонных вещей, которые вы можете просто удалить, этого должно быть достаточно:

def onLoad(self):
    self.memory = self.session().service("ALMemory")

def onInput_onStart(self):
    data = ['apple','mango','juice']
    self.memory.raiseEvent("myData", data)

... что касается стороны javascript, есть две вещи, которые нужно сделать:

  • Как только страница загрузится, покажите текущее значение данных - это сделает код ТВК
  • Как только значение изменится, обновите страницу - ваш код сделает это.

В совокупности это будет примерно так:

var session = new QiSession();
function updateDisplay(data) {
    "display to html here"
}
session.service('ALMemory').then(function(ALMemory){
  ALMemory.getData("myData").then(updateDisplay);
  ALMemory.subscriber("myData").then(function(subscriber) {
        subscriber.signal.connect(updateDisplay);
  });
});
0 голосов
/ 03 января 2019

Попробуйте работать с ALMemory.getData, а не с ALMemory.subscriber.Это может работать для вас:

var  session = new QiSession();

$(document).ready(function(){
getData();
});
function getData(){
session.service('ALMemory').then(function(ALMemory){
  ALMemory.getData("myData").then(function(data) {
    "display to html here"
    });
});
}
...