我正在尝试在图表之间设置共享工具提示。只有当工具提示没有shared: true
时才会很好用,如果我设置shared: true
我会收到错误:
TypeError: 'undefined' is not an object (evaluating 'a[0].category') highcharts.js:3259
我准备了示例:http://jsfiddle.net/CAKQH/24408/
如果你将光标移动到第一个图表上 - 它的效果很好,如果你评论它shared: true
它也有效,但是如果你在第二个图表上移动光标就会出错。
有人遇到此错误吗? 请帮我解决一下。
答案 0 :(得分:6)
出现问题是因为您在一个图表上有shared: true
,而在另一个图表上有默认值(false)。这是一个问题,因为tooltip.refresh
方法将采用不同的路径,并根据共享集合为true或false的图表使用不同的输入。
对于tooltip.refresh
方法,您可以在第8806行找到此分支in the source code:
// shared tooltip, array is sent over
if (shared && !(point.series && point.series.noSharedTooltip)) {
....
}
// single point tooltip
else {
....
}
您可以通过在syncTooltip
方法中进行分支来处理不同的情况(example JFiddle):
function syncTooltip(container, p) {
var i = 0;
for (; i < charts.length; i++) {
if (container.id != charts[i].container.id) {
if(charts[i].tooltip.shared) {
charts[i].tooltip.refresh([charts[i].series[0].data[p]]);
}
else {
charts[i].tooltip.refresh(charts[i].series[0].data[p]);
}
}
}
}
这样,您可以在两个图表上自由地将共享设置为true或false。
不幸的是,您的plotOptions.series.point.events.mouseOver
- 事件并未捕获被选中的点数#34;通过shared: true
功能,您必须找到一个备用事件来正确捕捉这种情况。