javascript - 更新d3数据到子节点

标签 javascript d3.js

我正在创建 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)

我正在获取旧的值(value)观。我做错了什么?

最佳答案

您将数据绑定(bind)到 g 元素,然后选择 rect 元素。如果要传播数据,请使用 .select("rect"):

this.svg.selectAll("g").data(data).select("rect")

关于javascript - 更新d3数据到子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734852/

相关文章:

javascript - 如何在 raphael paper.image 中嵌入 base64 图像格式

javascript - jQuery 设置的 margin-top 使内容跳转。我怎样才能让它流畅地动画?

javascript - 动态插入的 d3 力图未展开

javascript - 如何引用D3父元素的类?

d3.js - 有没有办法让D3的力布局不断移动?

javascript - 如何使用 D3 更新热图中的文本?

javascript - 如何仅从网格外部访问 Kendo Grid 列菜单并为列标题中的特定列添加筛选选项

javascript - JQuery 幻灯片 : fade effect

javascript - 正则表达式精确文本匹配不起作用

javascript - 这个 d3 代码如何从 v3 更新到 v4?