想象一下我有以下场景:
var dataset = [5, 5, 5, 5, 5]
d3.select("body").selectAll("p")
.data(dataset)
.enter()
.append("p")
.text(function(a) { return a;});
我不明白javascript是如何知道我在处理数据的,这与.text方法的定义有关吗?
然后我读了这篇文章,更加困惑,因为它对我来说不起作用。给定代码:
d3.select("body").selectAll("p")
.data(dataset)
.enter()
.append("p")
.text(function(err, data) { return data;});
我的输出是:
0
1
2
3
4
所以我的问题是:什么是惯例?它是如何实现的?
而不是
.text(function(err, data) { return data;});
代码应该是:
.text(function(data, index) { return data;});
因为d3回调将数据作为函数中的第一个输入,将索引作为函数的第二个输入。
看看这把小提琴:https://jsfiddle.net/m8h0maLn/1/
在.text()方法中callback.apply(this,[this.err,this.someData])
"this"指的是d3原型