JQuery UI Widget Inheritance / вызов метода класса

Я пытаюсь написать собственный виджет в пользовательском интерфейсе JQuery (v 1.9 m8): http://pastebin.com/zua4HgjR С моего сайта я называю его так: var D = new $.ui.mail({}); В основном это работает.

Есть ли лучший метод для вызова doSend при нажатии кнопки?

Вопрос в том, как получить доступ к экземпляру объекта из обработчика функции? "this" возвращает все окно html. Попытка с $.proxy не работает: нажмите: $.proxy(this.doSend, this);

Спасибо за совет!

2 ответа

Решение

После этих выходных я наконец-то закончил плагин: http://agrimarket-blacksea.com/jsc/jquery-mail.js

Я решил назвать "функцию класса" классическим способом: $(this).mail('doSend')До тех пор, пока я не найду что-нибудь получше.

Спасибо!

К сожалению, если вы настроите кнопки с помощью options член у вас не будет ссылки на элемент, который вам нужен для вызова doSend, Один из обходных путей, который мне удалось найти, - это назначить обработчик в _create метод, где у вас есть соответствующие ссылки.

_create: function() {
    this.options.buttons = [
        {
            text: 'Send',
            click: function(self) {
                return function() {
                    $(self.element).mail('doSend');
                };
            }(this)
        },
        {
            text: 'Cancel',
            click: function() { $(this).remove() }
        }
    ];                     
    this._super(arguments);
}

Живой пример - http://jsfiddle.net/hhscm/2/

Другие вопросы по тегам