我正在尝试使用选择中的相同数据绘制多个形状,所以假设我有:
myData = [
{
shape: 'rect',
attr: { width: 100, height: 100, x: 100, y:100 }
} , {
shape: 'circle',
attr: {cx, cy, etc...}
}
]
node.selectAll('*').data([myData]);
myData.obj.forEach(function(obj) {
// Append different shapes based on data
var shape = node.enter().append(obj.shape);
Object.keys(obj.attrs).forEach(function(attr) {
// Bind attrs to shapes based on data
shape.attr(attr, obj.attrs[attr]);
});
});
这里的节点是一个“g”元素,myData 是一个单一的数据对象。我的目标是根据 myData 修改 g 中的子形状,因此稍后如果我绑定另一个 myData 并再次调用此函数,它们可以更新。但我相信以某种方式 myData 只绑定到第一个附加的形状。有没有办法轻松地将相同的数据绑定到多个形状?