我是Highchart的新手,我对setExtremes
和afterSetExtremes
有疑问,我不确定我是否理解它们之间的区别。
这是一个参议员:
有一个函数可以在setExtremes
回调函数中从服务器检索json数据。我将使用setExtremes
(例如2015-01-01至2015-05-01)预先设置图表范围,以便每次设置图表范围时,都会调用此函数以从中获取新数据服务器,但从服务器获取的数据可能具有不同的日期范围(例如2015-03-01至2015-05-04)。我想根据数据的新范围调整图表范围。但是如果我在setExtremes
回调函数中再次使用setExtremes
,则会发生无限循环。
http://api.highcharts.com/highstock#xAxis.events.afterSetExtremes说
此事件在计算出最终的最小值和最大值后触发
所以我想这会解决我的问题,但我不确定究竟是怎么回事?
答案 0 :(得分:1)
差异如API参考中所述:setExtremes
可以使用不可接受的范围进行调用 - 在afterSetExtremes
范围内进行了更正。
您可以扩展Highcharts以在将值发送到原始setExtremes
函数之前更改min和max。 Highcharts的延迟加载演示使用动态加载数据,因此我们将包装器添加到该jsFiddle。
示例:http://jsfiddle.net/yu6ztw7h/
(function (H) {
H.wrap(H.Axis.prototype, 'setExtremes', function (proceed) {
var newMin = arguments[1],
newMax = arguments[2];
arguments[1] = (newMin+newMax)/2;
// Run original proceed method
proceed.apply(this, [].slice.call(arguments, 1));
});
}(Highcharts));
在这种情况下,范围的开始(newMin)将更改为原始范围的一半。您可以在包装器中加载数据,检查其极值,将更改的值传递给原始方法。