问题描述
我非常喜欢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);
});
}
^这不起作用,然后执行此操作然后缩小,我得到
我什至尝试更改基础数据然后调用
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);
}