我正在尝试创建一个d3插件,这个stackoverflow问题:
但在他展示的例子中
(function() {
d3.selection.prototype.editable = d3.selection.enter.prototype.editable = function() {
return this.attr('data-editable', true);
};
})();
我看不出他如何能够实际检索与选择相关的数据。这个甚至可以通过d3.selection的扩展来检索吗?我通过d3源略微扫描了一下,但发现自己比以前更加困惑了。
编写d3扩展程序/插件的人可以指导我正确的方向吗?
答案 0 :(得分:1)
在javascript中,this
引用的对象(通常在上面的示例代码中)由调用this
出现的函数的对象确定。
因此,行return this.attr('data-editable', true);
将返回调用editable
的完全相同的d3选择对象。
因此,您将恢复正常的旧d3选择对象,就像在普通的d3方法链接模式中一样。完成后,获取数据为just a matter of looking up the API for the d3 selection object.
如果您对如何获取数据感兴趣,请查看数据方法。从上面的链接,当没有参数调用该方法时:
如果未指定值,则此方法返回数据数组 对于选择中的第一组。返回数组的长度 将匹配第一组的长度和每个数据的索引 在返回的数组中将匹配相应的索引 选择。如果选择中的某些元素为null,或者如果 他们没有相关的数据,然后是相应的元素 数组将是未定义的。