0
我試圖在Angular2組件中使用vis.js
(或jQuery)單擊事件。我的圖表顯示得很好,我可以成功捕捉點擊事件。從jQuery或其他事件訪問組件屬性
但是,在點擊事件的上下文中,我放棄了對組件屬性的引用。例如,this.visData
是從事件中undefined
:
export class GraphContainerComponent implements OnInit {
private visData: {};
private options: {} = {};
private network: any;
@ViewChild('graphContainer') graphContainer;
ngOnInit() {
// populates this.visData
// this.visData = { nodes, edges }
this.makeGraph();
}
makeGraph() {
// no problem creating and displaying my graph, everything works
this.network = new vis.Network(this.graphContainer.nativeElement, this.visData, this.options);
// click event
this.network.on("selectNode", function (params) {
console.log(this.visData); // logs "undefined"
}
$('a').on('click', function() {
console.log(this.visData); // "undefined" as well
});
}
}
我明白爲什麼這是正常的行爲,我知道混合Angular2和jQuery或其他一些DOM的操縱庫是不推薦的做法,但有時它的你得到的全部。
從這些事件中維護對組件屬性的引用的最佳方法是什麼?
至關重要的是,我的頁面上有幾十個這樣的組件,所以我不認爲某種全局存儲是要走的路。
只需使用lambda表達式'()=> {}'代替'函數(){}'。 – Paleo