2015-07-21 16 views
0

我是Highchart的新手,我有一個關於setExtremesafterSetExtremes的問題,我不確定我是否理解他們之間的區別。HighStock中的setExtremes和afterSetExtremes之間的區別

這裏是一個senario: 有一個函數,從服務器檢索json數據在setExtremes回調函數。我將使用setExtremes(比如說2015-01-01到2015-05-01)預先設置一個圖表範圍,這樣每次我設置圖表範圍後,都會調用此函數從服務器獲取新數據,但是從服務器獲得的數據可能具有不同的日期範圍(說2015-03-01至2015-05-04)。我想根據數據中的新範圍調整圖表範圍。但如果我在setExtremes回調函數中再次使用setExtremes,則會發生無限循環。

http://api.highcharts.com/highstock#xAxis.events.afterSetExtremes說,最終的最大值和最小值後

此事件觸發計算

所以我想這將解決我的問題,但我不知道究竟怎麼了?

回答

0

差異如API參考文獻中所述: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)這種情況下,開始將被改變爲原來範圍的一半。您可以在包裝器中加載數據,檢查其極值,將更改的值傳遞給原始方法。