0

ここでは間違ったパターンを使用している可能性がありますが、使用している場合は、誰かが私を修正してくれることを願っています。

ユーザーのワークスペースを表すオブジェクトがあり、サーバーアクションに応答して、divのクローンを作成し、そのプロパティの一部を変更し、ワークスペースに配置して、ドラッグ可能にし、onCompleteアクションを追加します。このアクションは、ワークスペースオブジェクトの別のメソッドを呼び出して、レイアウトを永続化するためにdivの更新された位置をサーバーに送り返すことを目的としています。

クラスを関連するメソッドに分解しました。

var MooPanel = new Class( {
    createDiv: function() {
        var newDiv = existingDiv.clone();
        var dragHandle = newDiv.title;

        var move = new Drag(newDiv, {
            'handle':  dragHandle,
            'x': true,
            'y': true,
           /* original line: 
            'onComplete': function( el, dr ) { updateCoordinates( el, dr ); }
            */
           /* working line: */
            'onComplete': function( el, dr ) { this.updateCoords(el); }.bind(this)
        }
    },
    updateCoordinates: function( el, dr ) {
        send.to.server();
    }
});

updateCoordinates現在、メソッドを呼び出すのに問題があります。thisと他のキーワードのさまざまな組み合わせを試しましたが、うまくいきません。

電話をかける正しい方法は何updateCoordinatesですか?

4

1 に答える 1

1

これを試してください(しゃれは意図されていません):

onComplete: function( el, dr ) { this.updateCoordinates( el, dr ) }.bind(this);

onComplete関数内thisは、onComplete関数自体を参照します。関数をクラスにバインドすることによりthis、クラスインスタンス自体を参照します。

于 2010-01-07T21:50:30.560 に答える