目前,我正在尝试学习 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 在“this”处中断:
receiver 'this' is not in scope
如何在事件处理程序中使用“this”指针?
最佳答案
我想删除 =
和 ;
(最后)足以使您的代码正常工作。
EventListener _clickHandler(Event e){
this.setActive(e.currentTarget);
}
您将_clickHandler
设置为引用闭包的字段,并且在闭包中没有this
。将其更改为方法将使其按预期工作。
关于oop - 提供对事件处理程序中实例的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100722/