2015-07-10 70 views
5

我想根據全局值設置可重用的Highcharts工具提示的格式。 (我使用相同的圖表貨幣和數字值之間切換:如果我顯示在圖表上的貨幣數據,我想格式化工具提示作爲貨幣)Highcharts:動態更改工具提示格式化程序?

然而,this在Highcharts工具提示功能似乎僅指本地數據點,並且我似乎無法傳遞值。

如何傳遞值或獲取全局值?這是我現在的代碼,可怕的是:

getChartTooltip: function() { 
    return function(graphType) { 
     var prefix = (graphType === 'currency') ? '$' : ''; // Fails 
     return prefix + Highcharts.numberFormat(this.y, 0); 
    }; 
}, 

initializeChart: function() { 
    var graphType = 'currency'; 
    var chartOptions = {}; 
    chartOptions.tooltip = { 
     formatter: getChartTooltip(graphType) 
    }; 
    // create chart, etc... 
    $('change-chart-type').on('click', function() { 
    // Try to update the tooltip formatter, fail horribly... 
    graphType = 'number'; 
    chart.series[0].update({ 
     tooltip: { 
      formatter: _this.getChartTooltip(graphType) 
     } 
    }); 
}); 

什麼是更好的方法來做到這一點?

回答

4

您不需要更改tooltip.formatter,因爲它是formatter本身誰將更改tooltip

我會嘗試這樣的:

tooltip: { 
    formatter: function() { 
      var unit = ' $', 
       result = this.value; 
      if(this.series.name == 'your_currency_serie_name'){ 
       result += unit; 
      } 
      return result; 
    } 
} 

哪裏'your_currency_serie_name'是指貨幣值意甲的名稱。

2

您可以通過valueDecimals,valuePrefixvalueSuffix選項在每個系列中設置tooltip選項。然後tooltip將使用這些選項來顯示數據。生活demo

通用設置:

... 
     series: [{ 
      tooltip: { 
       valueDecimals: 0, 
       valuePrefix: '', 
       valueSuffix: '' 
      }, 
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 
     }, { 
      tooltip: { 
       valueDecimals: 2, 
       valuePrefix: '$', 
       valueSuffix: ' USD' 
      }, 
      data: [129.9, 171.5, 1106.4, 1129.2, 1144.0, 1176.0, 1135.6, 1148.5, 1216.4, 1194.1, 195.6, 154.4] 
     }] 
... 
相關問題