如何不使用“ this”就以角度访问当前组件的变量

时间:2019-08-13 13:59:08

标签: angular

这个问题听起来有点奇怪,但我会解释原因。我正在将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
 })

谢谢。

2 个答案:

答案 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”来访问变量