2017-12-12 6 views
0

이벤트를 결합내 angular2 구성 요소에서 나는 간단한 기능을 가지고

var s = new sigma({ 
    graph: sigmaJson, 
    container: 'network-graph', 
    settings: { 
    defaultNodeColor: '#ec5148' 
    } 
}); 

그래프가 제대로 렌더링됩니다. 이제 노드 중 하나를 클릭하면 onSelectNode 함수를 호출하려고합니다. 다음과 같이

s.bind('clickNode', nodeClick) 

함수 nodeClick이 정의된다 : 그래서, 다음과 같이 나는 bind 기능을 사용하고

nodeClick(event) { 
this.selectedLabel = event.data.node.label 
console.log(this.selectedLabel) // this prints correctly 
this.onSelectNode(this.selectedLabel) // getting error here 

}

을하지만 내에서 구성 요소 함수를 호출 할 수 없습니다입니다 nodeClick 기능. 자바 스크립트 콘솔에 다음과 같은 오류가 나타납니다 :

아무도 내가 잘못하고있는 것을 지적 할 수 있습니까?

답변

0

해결책을 찾았습니다. 문제는 first comment here을 가리키는 잘못된 this 범위 변수를 사용하고 있습니다. 최대 종료 코드에서 다음과 같이 변경하고 일했다 :

  1. 저장 콜백 함수 전에 별도의 변수에 현재 this 상황. 다음

    var self = this;

  2. 코드를 수정 :

    s.bind('clickNode', function (e) { console.log(e.type, e.data.node.label, e.data.captor); self.selectedLabel = e.data.node.label; self.OnSelectNode(self.selectedLabel); });

관련 문제