我的标签更新选择出了什么问题

what's wrong with my label update selection

我有一个条形图,我通过单击关联 table 的行来更新它。除了标签,一切都很好。这是以下代码:

 var mytext = svg.selectAll(".text").data(filterdata,function(d) { return d.date; }) 
    mytext.enter().append("text")
    mytext.exit().remove()
    mytext
    .attr("class","label")
    .attr("x", (function(d) { return x(d.date)  }  ))
    .attr("y", function(d) { return y(d.articles) + 1; })
    .attr("dy", ".75em")
    .text(function(d) { return d.articles; })
    .style("text-anchor", "start")
    }

输入选择工作正常(每次我点击一个新行,弹出新标签)但是旧标签不会消失。我的数据集看起来像这样:

[{articles: 1
date:Tue Apr 26 2016 00:00:00 GMT-0500 (CDT)
key:"2016-04-26T05:00:00.000Z"
values:1},
{articles:1
date:Thu Apr 28 2016 00:00:00 GMT-0500 (CDT)
key:"2016-04-28T05:00:00.000Z"
values:1},
{articles:2
date:Sun May 08 2016 00:00:00 GMT-0500 (CDT)
key:"2016-05-08T05:00:00.000Z"
values:2},
{etc...}]

能否移动退出指令:

mytext.exit().remove();

在您输入指令之前

mytext.enter().append("text")

像这样

var mytext = svg.selectAll(".text").data(filterdata,function(d) { return d.date; })
    mytext.exit().remove();
    mytext.enter().append("text");
    mytext
    .attr("class","label")
    .attr("x", (function(d) { return x(d.date)  }  ))
    .attr("y", function(d) { return y(d.articles) + 1; })
    .attr("dy", ".75em")
    .text(function(d) { return d.articles; })
    .style("text-anchor", "start")
    }

好的,我用下面的代码找到了解决方案

var mytext = svg.selectAll("text.label").data(filterdata,function(d) { return d.date; })
    mytext.exit().remove()
    mytext.enter().append("text")
    mytext
    .attr("class","label")
    .attr("x", (function(d) { return x(d.date)  }  ))
    .attr("y", function(d) { return y(d.articles) + 1; })
    .attr("dy", ".75em")
    .text(function(d) { return d.articles; })
    .style("text-anchor", "start")
    }

我将 svg.selectAll("text") 更改为 svg.selectAll("text.label")。我猜有些东西与 attr("class","label")append("text") 有关。但是如果有人能向我解释一下,我不完全理解:)谢谢