5

http://bl.ocks.org/mbostock/1134768

我正在学习使用 d3 来呈现数据。我试图了解上面代码中发生了什么,特别是在代码段中:

// Add a rect for each date
var rect = cause.selectAll("rect")
.data(Object) // THIS IS WEIRD TO ME....
.enter().append("svg:rect")
.attr("x", function(d) { return x(d.x); })
.attr("y", function(d) { return -y(d.y0) - y(d.y); })
.attr("height", function(d) { return y(d.y); })
.attr("width", x.rangeBand());

Object 构造函数在做什么.data()?我认为这data()将强制评估一个函数,所以实际上正在创建一个对象?为什么需要为每个数组的每个元素插入一个矩形causes

4

1 回答 1

8

看到这个答案

它被用作身份函数 - 之前绑定到选择的内容仍然绑定。这种模式通常是必要的,因为您必须调用.data()以获取更新选择。

就我个人而言,我非常不喜欢这样混淆我的代码;我宁愿这样做.data(function(d) { return d;}),因为很明显我在那里做什么。YMMV。

于 2013-07-24T01:22:07.417 回答