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

jlb*_*ggs 10 jquery highcharts

基于此线程中的信息:实现自己的状态 - INACTIVE_STATE?

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

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

一切都很好.

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

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

所以我的问题 -

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

重置图表的代码如下:

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

highlightSer 是一个回调功能,以突出某些系列.

以后不再起作用的代码示例:

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

谢谢!

Bhe*_*ung 17

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.
});
Run Code Online (Sandbox Code Playgroud)