highcharts 在写入新图表之前销毁(以防止内存泄漏)

yhqotfr8  于 2023-06-23  发布在  Highcharts
关注(0)|答案(1)|浏览(311)

http://api.highcharts.com/highstock/Chart.destroy
destroy ()-删除图表并清除内存。在将新图表写入同一容器之前应调用此方法。它在窗口卸载时被内部调用以防止泄漏。
下面是我如何调用销毁按钮点击
http://jsfiddle.net/ihtus/20Ld7hg8/

var hc_options = {
                    chart: {
                    renderTo: 'container'
                },
        series: [{
            name: 'USD to EUR',
            data: usdeur
        }]
    };
    var chart=new Highcharts.Chart(hc_options);

    $('#button').click(function () {
       chart.destroy();
        $(this).attr('disabled', true);
    });

在我的项目中,我在setInterval中多次重绘图表(使用更新的数据)。
下面是setInterval http://jsfiddle.net/ihtus/teg540zh/的代码

function init_graph() {
      var hc_options = {
              chart: {
                renderTo: 'container'
              },
              series: [{
                  name: 'USD to EUR',
                  data: usdeur
              }]
      };
      var chart=new Highcharts.Chart(hc_options);
    }

    var sint = setInterval(function(){
        init_graph();
    }, 4000);

我的问题是:我怎样才能在将新的图表写入同一个容器 * 之前销毁该图表 *(正如官方文档中所建议的那样)?

a64a0gku

a64a0gku1#

来自评论中的讨论:
应该可以使用Highcharts.charts数组,并在该数组中找到特定的图表(如果存在)进行销毁:

function init_graph() {
  var hc_options = {
          chart: {
            renderTo: 'container'
          },
          series: [{
              name: 'USD to EUR',
              data: usdeur
          }]
  };
  var chart=new Highcharts.Chart(hc_options);
}

var sint = setInterval(function(){
Highcharts.charts[0] && Highcharts.charts[0].destroy();
    init_graph();
}, 4000);

示例:http://jsfiddle.net/teg540zh/1/

相关问题