Highcharts / jQuery - 使用原始选项销毁和重建图表

时间:2011-10-24 19:37:24

标签: jquery highcharts

根据此帖子中的信息:Implement own state - INACTIVE_STATE?

我已经建立了一个符合我需求的图表 - jsfiddle

我添加了一些自定义控件,允许用户显示/隐藏所有系列,并选中/取消选中所有系列。

这些都很好。

我想要做的最后一部分是允许用户使用原始选项重置图表。

这部分我也开始工作了,但是有一个问题:一旦图表重建,允许用户显示/隐藏/检查/取消选中的功能不再起作用,因为我已经销毁并重新指定了变量他们逃跑了。

所以我的问题 -

  1. 这是破坏和重建图表的正确方法,还是有更好的方法?
  2. 如果这是这样做的话,那么如何让我的show / hide / check / uncheck函数继续工作呢?
  3. 重置图表的代码如下:

    //reset the chart to original specs
    $('#resetChart').click(function(){
        chart1.destroy();
        chart1 = new Highcharts.Chart(optionsChart1,highlightSer);
    });
    

    highlightSer是一个回调函数,用于突出显示某些系列。

    以后不再有效的代码示例:

    var chart = chart1;
    $('#showAll').click(function(){
            for(i=0; i < chart.series.length; i++) {
            chart.series[i].show();
        }
    });
    

    谢谢!

2 个答案:

答案 0 :(得分:16)

  

1)这是破坏和重建图表的正确方法,还是有更好的方法?

这是唯一的方法,而且Highcharts足够智能,所以你不必担心任何内存泄漏。

  

2)如果这样做,那么如何让我的show / hide / check / uncheck功能继续工作?

您正在重新创建图表,但不会再次将其分配给变量chart

$('#resetChart').click(function(){
    chart1.destroy();
    chart1 = new Highcharts.Chart(optionsChart1,highlightSer);
    chart = chart1; // <-------- Add this line here.
});

答案 1 :(得分:2)

是否有理由在此处将图表分配给新变量?

var chart = chart1;
在您销毁它之后,

chart将不再指向图形。如果您只使用重新分配的chart1,则seems to work just fine。或者我错过了什么?