2017-05-16 7 views
0

ハイチャートを使用して同期チャートを使用していますが、ツールチップオプション内でフォーマッタ機能を使用する際に問題があります。各グラフには異なるフォーマット要件(%vs整数と浮動小数点数など)がありますが、各チャートのツールチップの最後のチャートの書式をとっているようです。ハイチャート - 同期チャートのツールチップフォーマットの問題

これは、チャートタイトルやy軸のフォーマットに問題がなく、正しくピックアップされるため、これは予想外でした。これは私が現在、(それはそう非常に長いですと略す)したコードです:

JSONはの線に沿って何かを構造化されるだろう

for (var j = 0; j < json.data.length; j++) { 

    $('#highchart_metric' + i + '_').highcharts({ 
    chart: { 
     type: 'area', 
    }, 
    title: { 
     text: json.fmt[i].displayName, 
    }, 
    xAxis: { // left out for brevity}, 
    yAxis: { 
     labels: { 
     formatter: function() { 
      var label = this.axis.defaultLabelFormatter.call(this); 
      return numeral(label).format(json.fmt[i].format); 
     } 
     } 
    }, 
    tooltip: { 
     formatter: function() { 
     return moment(this.x).format("MMM Do[,] YYYY") + ': <b>' + numeral(this.y).format(json.fmt[i].format) + '</b>'; 
     } 
    } 
    series: [{ // left out for brevity }] 
    });  
} 
:それはそれのように見える

var json = { 
    data: [[/* data */][/* data */]]; 
    fmt: [ 
    { 
    col: "tfr", 
    displayName: "TFR", 
    fmt: "0,0.00" 
    }, 
    { 
    col: "volume", 
    displayName: "Ticket Volume", 
    fmt: "0,0" 
    } 
] 
}; 

答えて

1

が問題とされコールバックとforループの不正な使用。各フォーマッタコールバックは、同じ変数iにアクセスできるクロージャを作成します。ループが終了すると、json.data.lengthに等しくなります。

for eachループを使用すると、各グラフに個別の変数が作成されます。

for loophttp://jsfiddle.net/9eezsx7v/1/

forEach http://jsfiddle.net/9eezsx7v/を比較します