JavaScript、MooTools和变量/对象范围
我可能在这里使用了错误的模式,但如果我是,我希望有人能纠正我 我有一个表示用户工作区的对象,作为对服务器操作的响应,它克隆一个div,更改其某些属性,将其放置在工作区中,使其可拖动,并添加一个onComplete操作。此操作旨在调用workspace对象的另一个方法,将div的更新位置发送回服务器,以进行布局持久化 我已经将课程简化为相关的方法:JavaScript、MooTools和变量/对象范围,javascript,events,scope,mootools,draggable,Javascript,Events,Scope,Mootools,Draggable,我可能在这里使用了错误的模式,但如果我是,我希望有人能纠正我 我有一个表示用户工作区的对象,作为对服务器操作的响应,它克隆一个div,更改其某些属性,将其放置在工作区中,使其可拖动,并添加一个onComplete操作。此操作旨在调用workspace对象的另一个方法,将div的更新位置发送回服务器,以进行布局持久化 我已经将课程简化为相关的方法: var MooPanel = new Class( { createDiv: function() { var newDiv
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
和其他关键字,但都没有完全正确
调用更新坐标的正确方法是什么?试试这个(双关语不是故意的):
在onComplete函数中,此
指的是onComplete函数本身。通过将函数绑定到类this
,然后引用类实例本身。太棒了,谢谢你,我尝试了this
和的各种组合。bind(this)
但从来没有得到正确的答案,我现在编辑了答案,以包含正确的行,谢谢!
onComplete: function( el, dr ) { this.updateCoordinates( el, dr ) }.bind(this);