2014-09-29 3 views
2

지금은 다트 언어를 배우려고 노력 중이며 문제가 있습니다. 첫째, 일부 코드.이벤트 핸들러에서 인스턴스에 대한 액세스 제공

receiver 'this' is not in scope 

내가 이벤트 처리기에서 "이"포인터를 사용할 수있는 방법 : 같은 클래스 "이"에

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의 breakes 방법 _clickHandler 및 _constructNode입니까?

답변

2

=; (끝 부분)을 제거하면 코드 작업을 수행하기에 충분합니다.

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

당신은 _clickHandler 클로저를 참조하는 필드를 확인하고 폐쇄에 당신은 더 this이 없습니다. 메서드로 변경하면 예상대로 작동합니다.

+0

Thx. 나는 completly 그 방법으로 폐쇄에 대해 잊어 버린다. – GeraldIstar

+0

내가 그것을 볼 때까지 몇 초 걸렸다. 나는 왜 메소드가';'끝을 가지고 있는지 궁금해했다. ;-) –

관련 문제