将Object函数传递到d3中的data()中
Passing Object function into data() in d3
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());
对象构造函数在.data()
中做什么?我认为data()
会强制对函数求值,所以实际上是在创建一个对象?为什么需要为causes
中每个数组的每个元素插入一个矩形?
看看这个答案。
它被用作身份函数——以前与选择绑定的内容仍然绑定。这种模式通常是必要的,因为您必须调用.data()
才能获得更新选择。
就我个人而言,我非常不喜欢这样混淆我的代码;我更愿意做.data(function(d) { return d;})
,因为我在那里做的事情很明显。YMMV。
相关文章:
- 访问HTML中的data-*属性并将其作为道具传递
- 访问通过XHR.onreadystatechange回调中的XHR.send(data)发送的数据
- 使用$http的angular js中的JSON数据-data.push()
- 无法从IE中的data.responseText获取结果,但在其他浏览器中工作
- ExtJS使用控制器中的View Form Data作为Ajax请求参数
- 在观看后清除之前添加的GeoJson(scope.data)中的谷歌地图
- 为从AJAX调用中utlizes DATA参数的函数定义回调
- jsonp中的data[]——它的含义
- 当通过Jquery data()附加时,以及当直接通过HTML中的数据属性附加时,检查HTML元素中的数据()
- AngularJS中的data-ng-options指令
- IE8 中 data:uri 的 32KB 限制的任何解决方法
- 尝试将 $scope.data 传递到 param 对象中,从控制器传递到 Angular 中的服务
- javascript 在 Chrome 和 Firefox 中的 Data.parse()
- 如何替换.data javascript函数中的逗号(使用.replace)
- Javascript在X秒后使data-attr中的图像成为内联背景图像
- 如何使用 ExtJS 5 Ext.data.Model 字段参考(与 ExtJS 4 中的 belongsTo 相比)
- 在不进行HTTP调用的情况下更新Ember Data中的特定记录
- 分配存储在jQuery.data()中的对象的单个键
- 如何更新ember-data中的关系
- Ember-data中的私有变量