JavaScript, MooTools и область видимости переменных / объектов - PullRequest
0 голосов
/ 08 января 2010

Я мог бы использовать здесь неправильные шаблоны, но если да, я надеюсь, что кто-то может исправить меня!

У меня есть объект, который представляет рабочее пространство пользователя, и в ответ на действие сервера он клонирует 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?

1 Ответ

1 голос
/ 08 января 2010

Попробуйте это (каламбур не предназначен):

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

в вашей функции onComplete this относится к самой функции onComplete. Привязав функцию к вашему классу this, он ссылается на сам экземпляр класса.

...