胖箭不工作coffeescript?

时间:2013-10-13 01:42:28

标签: coffeescript this arrow-functions

我在咖啡脚本类构造函数中有这段代码:

@item.find("li").draggable( start: @startConnection, drag: @updateConnection).droppable( drop: @dropConnection )

在课堂上使用这三种方法:

startConnection:(ev,ui) =>
    @currentConnection = new Connection(ui.offset)

updateConnection:(ev,ui) =>
    @currentConnection.update(ui.offset)

dropConnection:(ev,ui) =>
    @currentConnection.finish(ui.draggable, ui.offset)

我得到了:

   Uncaught TypeError: Cannot call method 'finish' of undefined 

当我删除项目但不更新时:似乎@currentConnection在update()中正确定义但在dropConnection()中没有。

为什么呢?我没有得到什么问题?

1 个答案:

答案 0 :(得分:1)

我终于明白发生了什么:here是更能反映我的问题的代码。

//-- code in jsfiddle --//

在被删除的对象上调用drop回调,该回调不是发生拖动事件的对象。

之前没有拖动放置列表项的对象,因此未定义@id。

很多,这是一个愚蠢的错误,但我花了一段时间才明白。