【发布时间】:2015-01-29 13:15:25
【问题描述】:
我正在构建一个小型 UI,用户必须在显示的两个 SVG 中的每一个上选择一个点。
这些点坐标随后显示在 SVG 下方。我想使用 D3 的数据绑定和enter() 和exit() 方法来实现这一点。然而,D3 似乎并不总是更新我显示点坐标的部分,即使我在绑定元素上调用 enter() 方法也是如此。但是,在删除数据时,exit() 方法可以工作。
这里是主要代码:
function showPoints() {
var coordinatesElements = d3.select('#coordinates').selectAll('.point').data(points);
coordinatesElements.enter().append('div').classed('point', true)
.text(function (d) {
var textParts = [];
if (d.firstSvg) { textParts.push('first : '+JSON.stringify(d.firstSvg)); }
if (d.secondSvg) { textParts.push('second : '+JSON.stringify(d.secondSvg)); }
return textParts.join(' - ');
})
.append("span")
.classed('removeCalibrationPoint', true)
.html(" X")
.on('click', function(d, i) {
points.splice(i, 1);
showPoints();
});
coordinatesElements.exit().remove();
}
我创建了一个 JSBin 小提琴来演示这个问题。
【问题讨论】:
标签: javascript data-binding d3.js