2017-12-12 13 views
0

イベントをバインドは私のangular2コンポーネントで、私はシンプルな機能を持っている

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

グラフが正常に描画されています。ここで、ノードの1つがクリックされたときにonSelectNode関数を呼び出すとします。次のようにだから、私はbind機能を使用しています

s.bind('clickNode', nodeClick) 

機能nodeClickは、次のように定義されています

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

}

しかし、私は内からコンポーネントの機能を呼び出すことはできませんよnodeClick機能です。私はJavaScriptのコンソールで次のエラーが表示されます:

ERROR TypeError: this.onSelectNode is not a function 

誰かが間違っていることを指摘できますか?

答えて

0

解決策が見つかりました。問題はfirst comment hereに指摘されているようにスコープ変数thisを間違って使用していました。 は終わったコードで以下の変更を行い、それが働いた:

  1. 保存コールバック関数の前に別の変数に現在のthisコンテキスト。

    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); });

を次のようにコードを変更し

var self = this;

  • 関連する問題