更新函数内的类属性

时间:2018-01-17 09:44:04

标签: javascript d3.js

我正在尝试在点击事件上更新班级的this.bar属性。 问题是this函数中的click与类的this不同。

export class Chart {

  constructor() {
    this.bar;
  }

  showChart() {
    ...
    let group = svg.selectAll('g').data(data).enter().append('g');
    group.append('rect')
      .on('click', function(d) {
      // Here I want `this.bar = d`
      });

  }
}

2 个答案:

答案 0 :(得分:0)

您可以在函数之前的块中将变量设置为this

export class Chart {

  constructor() {
    this.bar;
  }

  showChart() {
    ...
    let self = this;
    let group = svg.selectAll('g').data(data).enter().append('g');
    group.append('rect')
      .on('click', function(d) {
          self.bar=d;
      });
  }
}

答案 1 :(得分:0)

您应该在this函数中定义showChart()

export class Chart {

  constructor() {
    this.bar;
  }

  showChart() {
    ...
    var th = this;      // Here you define it
    let group = svg.selectAll('g').data(data).enter().append('g');
    group.append('rect')
      .on('click', function(d) {
          th.bar = d;      
      });

  }
}