这个问题听起来有点奇怪,但我会解释原因。我正在将d3.js与Angular结合使用。一切都很好,但是在d3.js的逻辑内有时会发生一些事件,其中“ this”是与angular上下文不同的值。因此,我想知道是否可以通过以下方式直接访问在组件中定义的变量:
HomeComponent.myVar //HomeComponent name of my current component
代替
this.myvar
这是我使用d3.js的问题的一个示例
Node.on("mouseout", unfocus);
function unfocus(){
console.log(this); //problem context angular
}
Node.mouseover(function(d){
console.log(this); //this is not context angular, is a value of this event
console.log(HomeComponent.myvar); //not works, but is my idea
})
谢谢。
答案 0 :(得分:0)
注释说明您可以使用另一种语法来访问this
:
Node.mouseover(d => {
console.log(this);
})
如果您确实要保留其他语法(我不建议这样做),则可以将this
存储在另一个变量中:
let self = this;
Node.mouseover(function(d){
console.log(self);
})
我不建议这样做,因为它更难理解,容易出错,而且并不总是清楚变量的范围。
答案 1 :(得分:0)
尝试使用var / let / const关键字将变量放置在类范围之外。您可以尝试不使用“ this”来访问变量