提供对事件处理程序中实例的访问

时间:2014-09-29 13:08:03

标签: oop dart

目前,我正在尝试学习dart语言,并遇到问题。首先是一些代码。 _clickHandler和_constructNode是同一类的方法

  EventListener _clickHandler = (Event e){
    this.setActive(e.currentTarget);
  };

  /* Render methods */

  Element _constructNode(Node node){
      DivElement nodeContainer = new DivElement();
      nodeContainer.id = "node-${node.id.toString()}";
      nodeContainer.classes.add("node");


      SpanElement nodeTitle = new SpanElement();
      nodeTitle.text = node.value;
      nodeTitle.addEventListener('click', this._clickHandler);

      nodeContainer.append(nodeTitle);

      return nodeContainer;
  }

所以,_clickHandler打破"这":

receiver 'this' is not in scope

我如何使用"这个"事件处理程序中的指针?

1 个答案:

答案 0 :(得分:2)

我想删除=;(最后)就足以让您的代码正常工作。

EventListener _clickHandler(Event e){
  this.setActive(e.currentTarget);
}

你使_clickHandler字段引用一个闭包,而在闭包中你没有this。将其更改为方法将使其按预期工作。