如何将 d3 的每个方法与 ES6 箭头表示法一起使用
How to use d3's each method with ES6 arrow notation
出于某种原因,d3 使用this
来引用.each()
迭代中的当前元素。
我有这个代码:
var me = this;
...
d3.selectAll(".region").each(function(d) {
d3.select(this).style("fill", me.compute_color(...));
})
使用 ES6,我可以使用箭头符号来避免覆盖this
:
d3.selectAll(".region").each(d => {
d3.select(this).style("fill", this.compute_color(...));
})
但是,此代码不起作用,因为 d3 选择了错误的元素。事实上,我已经丢失了对该元素的唯一引用,因为 this
没有被 d3 覆盖。
如何更改d3.select(this)
使其正常工作?
可以使用作为第二个参数传递的索引来访问集合中的正确元素:
let selection = d3.selectAll(".region");
selection.each((d, i) => {
d3.select(selection[0][i]).style("fill", this.compute_color(...));
})
你可以
试试这个
d3.selectAll(".region").each((data, index, nodes) => {
d3.select(nodes[index]).style("fill", this.compute_color(...));
});
相关文章:
- 转义符不能与innerHTML一起使用
- React中的数据集表示
- 高亮显示与数组字符串一起使用时文本插件中断
- setTimeout可以与闭包内的函数一起使用吗
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- Highcharts colorsByPoint与系列中的线性渐变一起使用时不起作用
- 如何将js库与typescript一起使用
- 将webpack和babel与父项目目录中的文件一起使用
- 将 Drag&Drop 与 jsTree 和 DataTables 一起使用
- Javascript-如何让脚本与Ajax请求的数据一起运行
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 将两个ext.TabPanels滚动到一起
- 将jQuery UI Timepicker Addon与React一起使用
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- regex表示逗号,后跟空格或仅逗号
- 什么是curl以及如何将其与nodejs一起使用
- Javascript”;onmousemove”;事件无法与类一起使用
- 将命名空间与对象文本表示法和继承一起使用
- 如何将 d3 的每个方法与 ES6 箭头表示法一起使用