AMCharts-将子级动态添加到树形图

问题描述

我非常喜欢AMChart的许多功能,但找不到任何将一些子级动态添加到树形图中的方法

我正在尝试为每个元素的“命中”加载其他子项

  for (var i = 0; i < this.maxDepthLevel; i++) {
    const series = this.chart.seriestemplates.create(i);
    series.columns.template.events.on("hit",async function(ev) {
      const data = ev.target.dataItem.dataContext;
      children = await api.getChildrenOf(data.id);
      ev.target.dataItem.treeMapDataItem.children.values.push(...children);
    });
  }

^这不起作用,然后执行此操作然后缩小,我得到

enter image description here

我什至尝试更改基础数据然后调用

  this.chart.invalidaterawData();

但无济于事。

有人在将此类动态子级添加到树形图方面有任何经验吗? 我不能简单地预先加载所有内容,不幸的是,可能的深度层太多了,请求将太大!

解决方法

您需要像这样直接将子项推入子项值:

for(var index=0; index < children.length; index++){
    var newChildDataItem = new am4charts.TreeMapDataItem();
    newChildDataItem.value = children[index].value;
    newChildDataItem.name = children[index].name;
    newChildDataItem.color = ev.target.dataItem.dataContext.color;
    ev.target.dataItem.dataContext.children.insert(newChildDataItem);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...