无法访问类变量

时间:2015-07-17 14:40:13

标签: angularjs typescript

我开始使用typescript和angularjs。我编写了一个简单的类来负责拖放行为(或将来会有)。但是当我访问canvas元素时,我的handleDragEnd函数中出现错误

  

无法读取未定义的属性

以下是我的代码 - 如果有人能告诉我我做错了什么,我将不胜感激。

class ToolBox {
private canvas;

constructor(canvas)
{
    this.canvas = canvas;

    $(".beacon").draggable({
        helper: 'clone',
        cursor: 'pointer',
        start: this.handleDragStart,
        stop: this.handleDragEnd
    });        
}

handleDragStart()
{
    console.log('Drag Started!');
}

handleDragEnd()
{              
    var pointer = this.canvas.getPointer(event.e);

    console.log('Drag End!');  
    return;
}
}

1 个答案:

答案 0 :(得分:2)

由于类方法是在ToolBox.prototype上定义的,因此直接传递方法时this的值会丢失。

变化:

start: this.handleDragStart,
stop: this.handleDragEnd

要:

start: () => this.handleDragStart(),
stop: () => this.handleDragEnd()

这将通过调用实例上的方法来保留this的值。