javascript - `this` 变量在 Angular2 TypeScript 中的 js 方法或包之外无法访问

标签 javascript angular

this 变量在 Angular2 TypeScript 中的 js 方法或包之外无法访问。

public mousekeyAction() {
            var mc=0,kc=0;           
        gkm.events.on('key.pressed', function (data) {
          this.keyscount= kc++;
          console.log(this.keyscount);
        });
        // Listen to all mouse events (click, pressed, released, moved, dragged)
        gkm.events.on('mouse.*', function (data) {
            this.mousecount=mc++;
           console.log(this.mousecount);
        });
    }

最佳答案

您必须使用粗箭头作为函数/回调而不是简单的函数。即使在函数之外,这也将维持 this 的范围。

像这样使用你的函数:-

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);
        });
    }

有关更多信息,请参阅此处

关于javascript - `this` 变量在 Angular2 TypeScript 中的 js 方法或包之外无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42943397/

相关文章:

Angular2 rc6 检查后表达式发生了变化

javascript - Angular - Mat Paginator : Multiple Tables in a component

javascript - 用 jquery/javascript 覆盖 css

参数列表后缺少 Javascript )

javascript - 如何阻止 Senna.js 调用多个 jQuery 事件处理程序

javascript - 在 url 中隐藏 id 或 title 以获取 secret 信息

javascript - 将过滤器选择作为对象发送以在 Angular 应用程序中返回多个值

javascript - 传递给 D3-Tip 回调的参数是完整数据数组

javascript - 在jsfiddle中访问Bootstrap

angular - 重新获取路由参数更改的数据