HighCharts - 在编写新图表之前销毁(以防止内存泄漏)

时间:2017-07-18 15:28:15

标签: highcharts

来自http://api.highcharts.com/highstock/Chart.destroy

  

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);

我的问题是:如何销毁图表before writing a new chart into the same container(正如官方文档中建议的那样)? 感谢

1 个答案:

答案 0 :(得分:1)

通过评论中的讨论:

应该可以使用Highcharts.charts数组,并在此数组中找到destroy的特定图表(如果存在):

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/