通过wix代码提供HTML图表时的事件处理程序问题

问题描述 投票:0回答:1

我在wix页面上提供了一个HTML元素(饼图)。我从本地存储中提取7个变量的数据,并通过Postmessage将信息传递给HTML元素。

当它是按钮(导出功能)的一部分时,我的代码工作正常。但是我想从onReady函数触发事件(即加载页面时)。我使用完全相同的代码,但它只是不能使用OnReady函数(即我无法以编程方式触发事件)。

使用按钮导出功能的Wix页面代码(工作正常):

export function button1_click(event) {
var data = [introdeo, intcalypso, intbalthazar, intluna, intkiara, intmistral, intsaya];
console.log(data);
var labels = ["Rodeo", "Calypso", "Balthazar", "Luna", "Kiara", "Mistral", "Saya"];
let info = {data:data, labels:labels};
$w("#html1").postMessage(info);
}

onReady函数的Wix页面代码(不起作用):

$w.onReady(function () {
var data = [introdeo, intcalypso, intbalthazar, intluna, intkiara, intmistral, intsaya];
var labels = ["Rodeo", "Calypso", "Balthazar", "Luna", "Kiara", "Mistral", "Saya"];
let info = {data:data, labels:labels};
$w("#html1").postMessage(info); 

} );

HTML代码(wix页面上HTML元素中的图表代码):

<!DOCTYPE html>
<html lang="en-US">
<body>


<canvas id="myChart"></canvas>

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>

<script type="text/javascript">


var ctx = document.getElementById('myChart').getContext('2d');
var myPieChart = new Chart(ctx,{
    type: 'pie',
    data: {
        labels:[],
        datasets: [{
            data: [],
            backgroundColor: ["#f97a03", "#52aff0", "#35a11d", "#f052e4", "#853fc2", "#f0f712", "#092978"],
        }]
    },
    options: {}
});

window.onmessage = function(event){
    myPieChart.data.datasets[0].data = event.data.data;
    myPieChart.data.labels = event.data.labels;
    myPieChart.update();
};

</script>

</body>
</html>

使用按钮导出功能,我在网页上获得了更新的饼图。使用OnReady代码,我在HTML元素中得到一个空格。

javascript charts eventhandler wixcode
1个回答
0
投票

好像html元素可能还没准备好接收那个POST。尝试在setTimeout中包装$w("#html1").postMessage(info);

$w.onReady(function () {
  var data = [introdeo, intcalypso, intbalthazar, intluna, intkiara, intmistral, intsaya];
  var labels = ["Rodeo", "Calypso", "Balthazar", "Luna", "Kiara", "Mistral", "Saya"];
  let info = {data:data, labels:labels};
  setTimeout(function() {
    $w("#html1").postMessage(info);
  }, 1000) 
});
© www.soinside.com 2019 - 2024. All rights reserved.