angular - 如何从 Angular 事件监听器访问全局变量

标签 angular typescript event-listener

我有一个 Angular 项目,它使用 Fabric.js 作为 Canvas 。 我在使用 Canvas 对象的事件监听器时遇到一个问题。

在下面的代码中,我想在函数“movehandler”中使用全局变量“disabled”。 “console.log(this.disabled)”不起作用。 它在控制台中显示为“未定义”。

如何在 Canvas 函数中使用全局变量。

...
disabled = "yes";
...

ngAfterViewInit(){
    this.canvas = new fabric.Canvas(this.canvasTerm);
    console.log(this.canvas);
    this.innerWidth = window.innerWidth;
    this.innerHeight = window.innerHeight;
    this.canvas.setHeight(this.innerHeight - 120);
    this.canvas.setWidth(this.innerWidth - 120);
    this.canvas.on('object:moving', function () {
        console.log('Event object:moving Triggered');
    });

    var moveHandler = function (evt) {
        var movingObject = evt.target;
        //console.log("sss",movingObject.get('left'), movingObject.get('top'));
    };

    //handler for done modifying objects on canvas
    var modifiedHandler = function (evt) {
    var modifiedObject = evt.target;
    console.log(this.disabled);
    console.log( modifiedObject.id,"last",modifiedObject.get('left'), modifiedObject.get('top'));
    };

    var customEvtHandler = function (evt) {
        console.log("I was triggered by a custom event.");
    };

    //or you register with key/value pairs
    this.canvas.on({
        'object:moving' : moveHandler,
        'object:modified' : modifiedHandler,
        'custom:event' : customEvtHandler
    });
  }

最佳答案

尝试箭头功能。

而不是:

function (evt) {
}

试试这个:

() => {
}

(evt) => {
}

关于angular - 如何从 Angular 事件监听器访问全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61362811/

相关文章:

arrays - 如何遍历一个对象并插入一个数组

typescript - 什么 - ?在 TypeScript 中是什么意思?

html - 在angular2中覆盖子div的CSS属性

javascript - addEventListener 无法正常工作

javascript - 从 Angular 12 更新到 13 时如何修复 'require() of ES Module not supported' 错误?

Angular CDK : How to set Inputs in a ComponentPortal

angular - 将 Bootstrap 5 添加到 Angular 13

javascript - 有没有办法在es模块中导出promise的结果?

javascript - 如何创建自定义事件来处理所有 Transitionend 事件?

javascript - 如果 EventListener 已经存在,如何重用它? [纯 JavaScript]