我正在使用 AmCharts5 JS 构建一个图表,将域名显示为 ForceDirected 树中的节点。显示域,并且异步函数检查它们的可用性,并尝试根据可用性更改它们的颜色。这就是我被困住的地方。
我创建了一个适配器,可以根据节点的“可用性”属性更改节点的颜色:
series.circles.template.adapters.add("fill", function(fill, target) {
if (target.dataItem.dataContext.availability == 'unavailable') {
return am5.color(0xb30000);
}
else {
return am5.color(0x50b300);
}
});
这对于首先使用可用性属性实例化的节点非常有效。
但在我的用例中,在从异步查询获取结果后,我使用 series.getDataItemById('nameOfNode').dataContext.availability = 'XYZ'
更新可用性属性。这会更改 dataContext,但不会重新触发适配器,并且颜色保持不变。
有没有办法重新触发适配器?或者手动强制特定数据项的颜色更改?我左右浏览了文档,但找不到任何东西。
谢谢!
当然,你只需要在更改 dataContext 后在 Sprite 上设置填充,例如:
var circle = series.getDataItemById('nameOfNode').get("circle");
circle.set("fill", circle.get("fill"));