如何销毁图表对象以动态更改图表数据(Chart.js)?
我在 中显示一组图表,
for ($i = 0; $i < count($eval_list); $i++) {
echo '<canvas class="evaluator_chart"></canvas>';
}
并尝试通过单击链接动态更改其内容/数据。
我无法正确销毁图表对象。要么显示所有图表但数据未更改,要么数据更改但未显示所有图表(请参阅下面的示例)。
const myCanvas = document.querySelectorAll('.evaluator_chart');
for (let i = 0; i < myCanvas.length; i++) {
// split chart data by individual charts
const data = [];
const labels = [];
for (let x = i; x < by_eval_values.length; x+= myCanvas.length) {
labels.push(by_eval_labels[x]);
data.push(by_eval_values[x]);
}
const dataByEval = {
...
};
// destroy previous chart object
if (window.byEval) window.byEval.destroy();
// create chart object
let ctx = myCanvas[i].getContext('2d');
window.byEval = new Chart(
ctx, {
type: 'bar',
data: dataByEval,
options: options
});
}
不确定整个结构是否正确。预先感谢您的提示。
I display a set of charts in <canvas class="evaluator_chart"></canvas>
for ($i = 0; $i < count($eval_list); $i++) {
echo '<canvas class="evaluator_chart"></canvas>';
}
and try to change their content/data dynamically by clicking on links.
I am unable to properly destroy the chart object. Either all charts are displayed but the data is not changed, or the data is changed but not all charts are displayed (see sample below).
const myCanvas = document.querySelectorAll('.evaluator_chart');
for (let i = 0; i < myCanvas.length; i++) {
// split chart data by individual charts
const data = [];
const labels = [];
for (let x = i; x < by_eval_values.length; x+= myCanvas.length) {
labels.push(by_eval_labels[x]);
data.push(by_eval_values[x]);
}
const dataByEval = {
...
};
// destroy previous chart object
if (window.byEval) window.byEval.destroy();
// create chart object
let ctx = myCanvas[i].getContext('2d');
window.byEval = new Chart(
ctx, {
type: 'bar',
data: dataByEval,
options: options
});
}
Not sure whether the whole construction is correct. Thanks in advance for the tips.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已解决 - 销毁部分在循环之前移动并立即销毁那里的所有对象
Solved - the Destroy part moved before the cycle and destroyed all objects there at once