我将数据与元素绑定
首先,我选择我的元素
let trainSelect = svg.selectAll('.train-w-dir');
当我
console.log(trainSelect)
我得到的元素不是空的然后我绑定数据
trainSelect
.data(schedules, function(d: ISchedule) {
return d.train;
})
.enter()
.on('mouseover', tip.show)
.on('mouseout', tip.hide);
我在包含对象数组的调试器上检查计划。
但是在键函数
d
id undefined
中,我不知道为什么?所以我得到错误
Cannot read property 'train' of undefined
最佳答案
键功能被评估两次:每个选择的元素一次,每个数据一次。用docs(强调我)的话:
依次为每个选定元素评估此关键函数,依次传递当前数据(d),当前索引(i)和当前组(节点),并将其作为当前DOM元素(nodes [i]) ;返回的字符串是元素的键。然后,还会针对数据中的每个新基准,评估关键功能,并传递当前基准(d),当前索引(i)和组的新数据,以此作为组的父DOM元素;返回的字符串是基准的键。
在第一次运行中,如果尚未将数据绑定到元素,则对每个选定元素进行评估时d
将是不确定的。
从您提供的代码尚不清楚什么可能是解决问题的最佳方法。您可以提供安全保护措施以防止键函数中的未定义值,或者可能更好地重建将数据绑定到元素的方式。
相关:Join existing elements of the DOM to data with d3.js