【问题标题】:.destroy() generating error 'window.myChart.destroy()' is not a function.destroy() 生成错误“window.myChart.destroy()”不是函数
【发布时间】:2021-02-26 11:10:41
【问题描述】:

我正在为一款游戏开发一个损益跟踪器,我查询一个提供项目数据的 API,然后使用 chart.js 显示这些数据

我的问题是,在更新图表之前,它应该 .destroy() 上一个图表,但是我收到一条错误消息,提示 window.myChart.destroy is not a function

以下是用于此功能的代码;

// 检查 myChart 是否为空

    if (window.myChart != null){
    window.myChart.destroy();
  }

// 创建图表

let ctx = document.getElementById("myChart").getContext('2d');
       window.myChart = new Chart(ctx, { ... etc

// 更新尝试

if (window.myChart != null){
    window.myChart.destroy();
    window.myChart = null;
  }

【问题讨论】:

  • 在销毁后设置'window.myChart = null'以确保它不会调用两次。
  • @Mr.当前的问题是 .destroy() 没有被识别为函数
  • 我遇到了同样的问题,因为我试图摧毁它两次。那是因为 destroy() 没有设置“window.myChart = null”,而是完全破坏了对象。在这种情况下,“if (window.myChart != null)”通过但图表已经销毁。
  • 我已经更新了问题以包括我的尝试,可悲的是它仍然给出同样的错误,它做对了吗?
  • 根据文档“这必须在画布重新用于新图表之前调用。”您可以使用 update() 代替销毁并重建它吗? chartjs.org/docs/latest/developers/api.html

标签: javascript chart.js destroy


【解决方案1】:

在图表创建后声明一个函数;

function destroyChart() {
  myChart.destroy();
}

由于是在图表声明后调用,所以可以正常工作

所以在你的情况下,在图表函数之前调用destroyChart();

  destroyChart();
  displayGraphs();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多