Ale*_* K. 2 javascript highcharts
我正在尝试在图表之间设置共享工具提示.只有当工具提示没有时shared: true,它才能正常工作,如果我设置shared: true我会收到错误:
TypeError: 'undefined' is not an object (evaluating 'a[0].category') highcharts.js:3259
Run Code Online (Sandbox Code Playgroud)
我准备了一个例子:http://jsfiddle.net/CAKQH/24408/
如果你将光标移动到第一个图表上 - 它的效果很好,如果你评论shared: true它可以工作,但如果你在第二个图表上移动光标,你将收到一个错误.
有人遇到过这个错误吗?请帮我解决一下.
出现此问题的原因是您shared: true在一个图表上,而在另一个图表上具有默认值(false).这是一个问题,因为该tooltip.refresh方法将采用不同的路径,并根据具有共享集的图表为true或false来不同地使用输入.
您可以在第8806行的源代码中找到此分支,tooltip.refresh方法如下:
// shared tooltip, array is sent over
if (shared && !(point.series && point.series.noSharedTooltip)) {
....
}
// single point tooltip
else {
....
}
Run Code Online (Sandbox Code Playgroud)
您可以通过在syncTooltip方法内部进行分支来处理这种情况(例如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]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以在两个图表上自由地将共享设置为true或false.
遗憾的是,您的plotOptions.series.point.events.mouseOver-event不会捕获通过该shared: true功能"选中"的点,因此您必须找到备用事件才能正确捕获此情况.
| 归档时间: |
|
| 查看次数: |
4024 次 |
| 最近记录: |