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 回答