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

时间:2012-09-21 17:50:21

标签: jquery highcharts javascript highstock

我试图在移动 highstock 滑块时绘制 pie 图表。

首先,每件事情都行,我正在获得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 Demo

2 个答案:

答案 0 :(得分:3)

您似乎覆盖了chart变量。 Use a different variable for the pie and the stock chart.

在您的情况下,您也可以use this inside the chart.events.redraw指向处理程序中的当前(甚至正在处理的)图表。 Demo @ 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事件,因为您想在滑块的幻灯片上执行某些操作。 / p>

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

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

Handling slider events @ jsFiddle

答案 1 :(得分:0)

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

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

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

在调用console.log

之前提及此问题