我只是踩到了这个bug(或者它可能是一个“功能”)
如果我将绑定方法(使用胖箭头定义)作为D3js回调传递,则使用null参数调用它:
d3.json "some.json", @handler
如果我将它括在一个绑定的闭包中(胖箭头),那么它接收它的参数ok:
d3.json "some.json", (json) => @handler json
Here is a JSFiddle showing the issue.
将胖箭头绑定方法作为标准Javascript回调(例如发送到setTimeout
)或作为jQuery回调或事件处理程序传递是一种经过验证的技术,事实上我有一个完整的应用程序以这种方式编写。
为什么它在D3js中不起作用?
答案 0 :(得分:3)
问题是d3.json
的回调有两个参数(参见the documentation):
[T]使用两个参数调用回调:错误(如果有)和解析的JSON。
如果D3检测到回调函数只有一个参数,它只传递数据,但在第一个例子中不能这样做。相应地更改处理函数的定义可以解决问题:
directHandler: (e, x) =>
@log "directHandler received #{JSON.stringify x}"
完整演示here。