想象一下,我有以下情况:
var dataset = [5, 5, 5, 5, 5]
d3.select("body").selectAll("p")
.data(dataset)
.enter()
.append("p")
.text(function(a) { return a;});
我无法理解javascript究竟知道我处理数据的方式,是否与 .text 方法的定义有关?
然后我读了这篇article并且更加困惑,因为它在我的案例中并不起作用。鉴于该代码:
d3.select("body").selectAll("p")
.data(dataset)
.enter()
.append("p")
.text(function(err, data) { return data;});
我的输出是:
0
1
2
3
4
所以我的问题是:约定是什么?它是如何实现的?
答案 0 :(得分:1)
而不是
.text(function(err, data) { return data;});
代码应该是:
.text(function(data, index) { return data;});
因为d3回调将数据作为第一个输入,索引作为函数中的第二个输入。
看到这个小提琴:https://jsfiddle.net/m8h0maLn/1/
答案 1 :(得分:1)
在.text()方法中会有
callback.apply(this,[this.err,this.someData])
“这”将指的是d3原型