使用多个图表重绘时,axis.extremes.userMin和userMax未定义

我试图绘制一个饼图移动highstock滑块。

一开始,每件事情都行,我正在获得highStock的axis.extremes.userMinuserMax值。

  var extremes = chart.xAxis[0].getExtremes(); console.log(extremes); console.log(chart.xAxis[0]); console.log("userMin = " + extremes.userMin); console.log("userMax = " + extremes.userMax); 

但是一旦绘制饼图,我就会在控制台中看到undefined值。 可能导致此问题的原因或者如何获取userMin / userMax

jsFiddle演示

您似乎正在覆盖chart变量。 为饼图和股票图表使用不同的变量。

在您的情况下,您也可以在chart.events.redraw使用this来指向处理程序中的当前(甚至正在处理)图表。 演示@ jsFiddle

 redraw: function (event) { if (this.xAxis) { var extremes = this.xAxis[0].getExtremes(); console.log(extremes); console.log(chart.xAxis[0]); console.log("userMin = " + extremes.userMin); console.log("userMax = " + extremes.userMax); drawPie(); } } 

处理用例的更好或更正确的方法是将处理程序附加到xAxis.events.setExtremes事件而不是chart.events.redraw事件,因为您想在滑块的幻灯片上执行某些操作。

如文档中所述,事件对象包含新的最小值和最大值,如event.minevent.maxthis表示处理程序内的轴。
这就是你的代码的样子

  xAxis: [ { events: { setExtremes: function(event) { console.log(this); console.log("userMin = " + event.min); console.log("userMax = " + event.max); drawPie(); } }} ], 

处理滑块事件@ jsFiddle

在将数据分配给系列之前,您似乎正在调用console.log。

您是否可以在已将数据分配到系列后尝试调用console.log?

 series : [{ name : 'AAPL', data : data, tooltip: { valueDecimals: 2 } }] 

在调用console.log之前提到这一点