我开始使用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;
}
}
答案 0 :(得分:2)
由于类方法是在ToolBox.prototype
上定义的,因此直接传递方法时this
的值会丢失。
变化:
start: this.handleDragStart,
stop: this.handleDragEnd
要:
start: () => this.handleDragStart(),
stop: () => this.handleDragEnd()
这将通过调用实例上的方法来保留this
的值。