Вы можете попробовать выбрать глобальное событие d3.event.target
и связать свою область действия с функцией события
class Chart {
constructor(opts){
this.data_ = opts.data_;
this.width_ = opts.width_;
this.height_ = opts.height_;
this.draw(); //create the chart
}
draw(){
this.container = svgContainer.append('g')
.attr('id', 'country-wrapper')
.attr('width', this.width_)
.attr('height', this.height_)
.attr('transform', 'translate(0,0)')
.on('mouseover', this.handleMouseOver.bind(this));
//.on('mouseout', this.handleMouseOut);
}
handleMouseOver() {
var this_ = d3.select(d3.event.target);
console.log(this_, this.data_); // this.data_ >> it says it is undefined
}
}
или, если вы используете современные функции стрелок, она автоматически связывает ваш контекст
class Chart {
constructor(opts){
this.data_ = opts.data_;
this.width_ = opts.width_;
this.height_ = opts.height_;
this.draw(); //create the chart
}
draw(){
this.container = svgContainer.append('g')
.attr('id', 'country-wrapper')
.attr('width', this.width_)
.attr('height', this.height_)
.attr('transform', 'translate(0,0)')
.on('mouseover', this.handleMouseOver);
//.on('mouseout', this.handleMouseOut);
}
handleMouseOver = () => {
var this_ = d3.select(d3.event.target);
console.log(this_, this.data_); // this.data_ >> it says it is undefined
}
}