问题描述
我试图通过传入节点的 id 来调用一个方法,但它一直说该方法不是一个函数。
这是 stackblitz 链接:https://stackblitz.com/edit/cytoscape-call-method?file=src/app/app.component.ts
您可以单击任何节点并查看控制台错误。它说 this.showId 不是一个函数。
一些代码
this.cy.on('click','node',function(evt) {
console.log('clicked ' + this.id());
this.showId(this.id());
});
我也尝试过使用 tap,但仍然出现相同的错误。
解决方法
嗯,我想我明白你的意思了。这是关于 JS 中的作用域。下面试试
this.cy.on('click','node',(evt) => {
console.log('clicked ' + this.id());
this.showId(this.id());
});
或以下
this.cy.on('click',function (evt) {
console.log('clicked ' + this.id());
this.showId(this.id());
}.bind(this));
两者其实是一样的