我正在使用Highcharts使用同步图表,但我在使用工具提示选项中的格式化程序功能时遇到问题。每个图表都有不同的格式要求(%vs整数与浮点数等),但它似乎只是为每个图表工具提示采用最后的图表格式。
这是出乎意料的,因为我没有图表标题和y轴格式的问题,它正确地选择了。这是我目前的代码(缩写为非常冗长):
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 }]
});
}
json的结构类似于:
var json = {
data: [[/* data */][/* data */]];
fmt: [
{
col: "tfr",
displayName: "TFR",
fmt: "0,0.00"
},
{
col: "volume",
displayName: "Ticket Volume",
fmt: "0,0"
}
]
};
答案 0 :(得分:1)
看起来这是错误使用回调和for循环的问题。每个格式化程序回调都会创建一个闭包,它可以访问相同的变量i - 当循环结束时,它等于json.data.length。
使用forEach类型的循环,它将为每个图表创建一个单独的i变量。
将forEach
http://jsfiddle.net/9eezsx7v/与for loop
http://jsfiddle.net/9eezsx7v/1/