【问题标题】:amCharts4: Collapsed charts becoming blank after related interactivityamCharts4:相关交互后折叠的图表变为空白
【发布时间】:2019-05-26 19:26:07
【问题描述】:

我在一页中有六个图表、三个仪表和三个 XY 图表。 3 量规图表始终可见,而 XY 图表默认折叠。

在页面加载时,所有图表都正确绘制,无论它们是否折叠。但是如果我刷新所有图表,例如在更改日期选择器值之后,所有折叠的图表都会变成白色。

我怎样才能避免这种情况?是否有使图表大小无效的命令,或者只是在调整 div 大小时重绘它?

编辑:

我能够用标签重现类似的行为:在页面加载时,所有标签都正确显示,但如果我单击刷新按钮重新绘制图表,当前不可见的标签将变为空白。

您可以在这里查看:https://jsfiddle.net/giulia_pinnisi/cqoz5vbg/13/

draw_chart("chart1", data1);
draw_chart("chart2", data2);
draw_chart("chart3", data3);

$('#refresh_button').click(function() {
  draw_chart("chart1", data1);
  draw_chart("chart2", data2);
  draw_chart("chart3", data3);
});

非常感谢

朱莉娅

【问题讨论】:

  • 你能发布你的代码吗?日期选择器是您自己创造的吗?
  • 不,这是一个日期范围选择器:daterangepicker.com。代码有点长,我不会把它贴在这里,反正步骤是:在日期选择器选择更改时,调用一个函数 date_changed() 调用函数列表,比如进行 ajax 调用的 loadPerformanceRatio(..)获取要在我的图表上绘制的值。
  • @Giuly - 代码真的会有所帮助。 SO建议提供MVCE;重现的简化版设置将有助于了解您是如何更新/绘制所有内容的。
  • 我刚刚添加了一个不同但相似情况的示例

标签: javascript amcharts amcharts4


【解决方案1】:

如果你想重新实例化图表,你需要dispose

chart.dispose();

查看更新示例:https://jsfiddle.net/hosfrcd8/

【讨论】:

  • 我发现我试图在同一个容器中创建一个新图表而不是现有图表。这不是正确的做法。旧的 SVG 被覆盖,但所有的变量、事件处理程序、帮助元素仍然存在,并且很可能导致各种问题。正如您所说,要覆盖图表,我必须首先在其对象上调用 dispose() 。更好的是,如果有人只需要更新图表的数据,您可以重用相同的对象,只需设置它们的数据属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 2017-03-12
  • 2010-12-20
  • 2015-04-24
相关资源
最近更新 更多