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/