我是 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说
this event fires after the final min and max values are computed
所以我想这会解决我的问题,但我不确定具体如何解决?
最佳答案
差异如 API 引用中所述:可以使用 Not Acceptable 范围调用 setExtremes
- 在 afterSetExtremes
范围得到纠正。
您可以扩展 Highcharts 以更改最小值和最大值,然后将值发送到原始 setExtremes
函数。 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) 将更改为原始范围的一半。您可以在包装器中加载数据,检查其极端情况,将更改后的值传递给原始方法。
关于javascript - HighStock 中 setExtremes 和 afterSetExtremes 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31551390/