Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript `在angular2 typescript中的js方法或包之外无法访问此变量_Javascript_Angular - Fatal编程技术网

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函数,这是词法上的,并且是从定义它们的执行上下文中采用的。