Javascript 将d3数据更新到子节点

Javascript 将d3数据更新到子节点,javascript,d3.js,Javascript,D3.js,我正在创建一个d3条形图。我有一个json值数组 bars = this.svg.selectAll("g") .data(data) .enter() .append('g') .attr('transform',function(d, i) { return "tra

我正在创建一个d3条形图。我有一个json值数组

      bars = this.svg.selectAll("g")
                    .data(data)
                    .enter()
                      .append('g')
                      .attr('transform',function(d, i) {
                        return "translate(0," + i * 30 + ")";
                        });

          bars.append('rect')
            .attr('height',20)
            .attr('fill',this.color)
            .attr('width',0)
            .attr("x",100)
            .transition()
              .attr('width',function(d){
                console.log('rect',d);
                return widthScale(d.value)
                })
              .duration(1000)
过了一段时间,我得到了一个新的值列表,所以我更新数组并传递它

             this.svg.selectAll("g")
                    .data(data)
                    .attr('asd',function(d){
                      console.log("My Data",d);
                      return 1;
                    });
在我的控制台日志中,我得到的数据非常好,但是当我尝试从矩形访问时

   bars.selectAll('rect')
            .transition()
              .attr('fill',this.color)
              .attr('width',function(d){
                  console.log(d.value);
                  return widthScale(d.value)
                })
              .duration(1000)

我的价值观变老了。我做错了什么?

您正在将数据绑定到g元素,然后选择rect元素。如果要传播数据,请使用。选择Rect:


将数据绑定到g元素,然后选择rect元素。如果要传播数据,请使用。选择Rect:


将数据绑定到g元素,然后选择rect元素。如果要传播数据,请使用.selectrect:this.svg.selectAllg.datadata.selectrect您可以将其作为答案吗?我将选择它作为答案您将数据绑定到g元素,然后选择rect元素。如果要传播数据,请使用.selectrect:this.svg.selectAllg.datadata.selectrect您可以将其作为答案吗?我将选择它作为答案
this.svg.selectAll("g").data(data).select("rect")