Chartjs v4.4为什么我不能调用myChart.Update()

dohp0rv5  于 2023-11-18  发布在  Chart.js
关注(0)|答案(1)|浏览(230)

我已经阅读了一堆在chartjs中交换数据集的解决方案,但似乎没有一个适用于v4.4。目前我有一个图表,我想点击一个按钮并更改数据集。我能够看到在我的控制台中发生的变化,但我似乎无法弄清楚如何让图表更新。任何想法?我一直得到“.Udate不是一个函数”

HTML

<button onclick="myFunction()">Click Me</button>
<canvas id="myChart"></canvas>

字符串

  • JS*
let currentSelection = DataArray;
const ctx = document.getElementById('myChart');

new Chart(ctx, {
    type: 'line',
    data: {
        labels: NumberArr,
        datasets: [{
            label: 'My Chart',
            data: currentSelection,
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            y: {
                beginAtZero: false
            },
            x: {
                display: false
            }
        }
    }
});

function myFunction() {
    if (ctx.dataset[0] == DataArray) {
        ctx.dataset[0] = NewDataArray
        console.log(ctx.dataset, "Part 1");
    } else {
        ctx.dataset[0] = DataArray;
        console.log(ctx.dataset, "Part 2");
    }
    ctx.update();
}

9cbw7uwe

9cbw7uwe1#

你在canvas上调用update(),但是这个update()是chart的一个方法,而不是canvas本身。
修改了js代码;

let currentSelection = DataArray;
const ctx = document.getElementById('myChart');
let myChart = new Chart(ctx, {
   type: 'line',
   data: {
       labels: NumberArr,
       datasets: [{
           label: 'My Chart',
           data: currentSelection,
           borderWidth: 1
       }]
   },
   options: {
       scales: {
           y: {
               beginAtZero: false
           },
           x: {
               display: false
           }
       }
   }
});

function myFunction() {
   if (myChart.data.datasets[0].data == DataArray) {
       myChart.data.datasets[0].data = NewDataArray;
       console.log(myChart.data.datasets, "Part 1");
   } else {
       myChart.data.datasets[0].data = DataArray;
       console.log(myChart.data.datasets, "Part 2");
   }
   myChart.update();
}

字符串
你可以看到,我创建了一个变量myChart。这使用了当你调用new Chart()时创建的图表的示例。然后,这个myChart.data.datasets[0].data用于访问数据集中的数据。最后,myChart.update()(显然)用于更新图表。

相关问题