D3.js 方法链接命令在我拆分时不起作用,它起作用了

D3.js method chaining command dosn't work when I split it, it works

我是 D3.js 的新人, 当我使用这段代码时,它不起作用,(它是重绘的一部分,当 运行 第一次时它工作良好,当再次调用重绘时它工作意外)

var rows=tbody.selectAll('tr').data(roster);
rows.enter().append('tr');
rows.exit().remove();
rows.selectAll('td').data(function(row) { return columns.map(function(col) {
  return row[col];
});}).enter().append('td').text(function(d) {return d;} );

当我将链分解成更小的链时,它就起作用了。

var rows=tbody.selectAll('tr').data(roster);
rows.enter().append('tr');
rows.exit().remove();

var cells = rows.selectAll("td")
.data(function(row) { return columns.map(function(col) {
  return row[col];
});});
cells.enter().append("td");
cells.text(function(d) { return d; });

任何原因或任何规则都适用。

在第一种情况下,您只更新新单元格的文本,而不更新旧单元格。当您像这样链接 .enter() 时,以下所有链接的方法都适用于 .enter() 返回的对象,即输入选择:换句话说,添加的单元格。

阅读this