根据此帖子中的信息:Implement own state - INACTIVE_STATE?
我已经建立了一个符合我需求的图表 - jsfiddle
我添加了一些自定义控件,允许用户显示/隐藏所有系列,并选中/取消选中所有系列。
这些都很好。
我想要做的最后一部分是允许用户使用原始选项重置图表。
这部分我也开始工作了,但是有一个问题:一旦图表重建,允许用户显示/隐藏/检查/取消选中的功能不再起作用,因为我已经销毁并重新指定了变量他们逃跑了。
所以我的问题 -
重置图表的代码如下:
//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();
}
});
谢谢!
答案 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。或者我错过了什么?