在这个JSFiddle演示中,我有2个Highcharts折线图。当其中一个图表放大时,另一个图表应在同一区域上放大。这样做的代码是
xAxis: {
events: {
afterSetExtremes: function (event) {
var index = document.getElementById('container2').dataset.highchartsChart;
var chartPartner = Highcharts.charts[index];
chartPartner.xAxis[0].setExtremes(event.min, event.max);
chartPartner.showResetZoom();
}
},
},
其中container2
是另一个图表呈现到的DOM元素的ID。这种行为几乎可以正常工作,但是有两个小问题:
chartPartner.showResetZoom();
您的问题是您在无限循环中调用了setExtremes,因为您告诉“ afterSetExtremes”事件触发了另一个“ afterSetExtremes”事件。您可以通过设置状态变量来轻松地避免这种情况。
这就是为什么我介绍这个:
var updating = false;
并将事件的最后部分更改为:
if (!updating) {
updating = true;
chartPartner.xAxis[0].setExtremes(event.min, event.max);
chartPartner.showResetZoom();
}
JSFiddle:http : //jsfiddle.net/qq4wnyqo/1/
编辑:原始JSFiddle甚至产生了控制台错误“超出了最大调用堆栈大小”。下次您可能想寻找类似的东西。
编辑:您仍然需要找到一种解决方案,以便在使用“重置缩放”按钮后将其隐藏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句