0

コーヒースクリプトクラスコンストラクターに次のコードがあります。

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

クラス内のこれら 3 つのメソッドを使用すると、次のようになります。

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() では定義されていないようです。

なんで?何が悪いのかわからない?

4

1 に答える 1

1

私は最終的に何が起こったのかを理解しました.これは私の問題をよりよく反映したコードです.

//-- code in jsfiddle --//

ドロップ コールバックは、ドラッグ イベントが発生したオブジェクトではなく、ドロップ先のオブジェクトで呼び出されます。

リスト項目がドロップされたオブジェクトは以前にドラッグされていないため、@id は未定義です。

どうも、これはばかげた間違いでしたが、理解するのに少し時間がかかりました。

于 2013-10-13T14:59:40.250 に答える