Javascript `在angular2 typescript中的js方法或包之外无法访问此变量
Javascript `在angular2 typescript中的js方法或包之外无法访问此变量,javascript,angular,Javascript,Angular,在angular2 typescript中的js方法或包之外,无法访问此变量 public mousekeyAction(){ var mc=0,kc=0; gkm.events.on('key.pressed',函数(数据){ 这个.keyscount=kc++; console.log(this.keyscount); }); //收听所有鼠标事件(单击、按下、释放、移动、拖动) gkm.events.on('mouse.*',函数(数据){ this.mousecount=mc++; co
在angular2 typescript中的js方法或包之外,无法访问此
变量
public mousekeyAction(){
var mc=0,kc=0;
gkm.events.on('key.pressed',函数(数据){
这个.keyscount=kc++;
console.log(this.keyscount);
});
//收听所有鼠标事件(单击、按下、释放、移动、拖动)
gkm.events.on('mouse.*',函数(数据){
this.mousecount=mc++;
console.log(this.mousecount);
});
}
您必须将胖箭头
用作函数/回调,而不是简单的函数。这将保持此功能的范围,即使在功能之外也是如此
像这样使用您的功能:-
public mousekeyAction() {
var mc=0,kc=0;
gkm.events.on('key.pressed', (data) => {
this.keyscount= kc++;
console.log(this.keyscount);
});
// Listen to all mouse events (click, pressed, released, moved, dragged)
gkm.events.on('mouse.*', (data) => {
this.mousecount=mc++;
console.log(this.mousecount);
});
}
有关更多信息,请参阅此处
分配给另一个变量,如下所示
public mousekeyAction() {
var mc = 0,
kc = 0,
self = this;
gkm.events.on('key.pressed', function(data) {
self.keyscount = kc++;
console.log(self.keyscount);
});
// Listen to all mouse events (click, pressed, released, moved, dragged)
gkm.events.on('mouse.*', function(data) {
self.mousecount = mc++;
console.log(self.mousecount);
});
}
由于回调
上下文与预期此
的上下文不同将此
分配给回调
@PardeepJain Y以外的另一个变量
@PardeepJain Y所以?这将引用gkm.events。在
函数实例上,根据mecan,这将不起作用。我在任何地方使用self.keycount全局?@praveenkumars不在任何地方,仅在定义的方法内。@jyithi我发现使用arrow函数的完整解决方案允许在jsfunction内使用此函数。此函数的作用域始终是当前执行上下文。对于arrow函数,这是词法上的,并且是从定义它们的执行上下文中采用的。