使用多个图表重绘时,axis.extremes.userMin和userMax未定义
我试图绘制一个饼图移动highstock滑块。
一开始,每件事情都行,我正在获得highStock的axis.extremes.userMin
和userMax
值。
码
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.min
和event.max
, this
表示处理程序内的轴。
这就是你的代码的样子
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之前提到这一点