Вызов метода расширенного виджета jquery - PullRequest
2 голосов
/ 21 января 2012

У меня есть такой виджет jquery:

$.widget("ui.MyWidget", {
              options: {            
            Value1: 10,
            Value1: 20,
        },
// and other methods like _create,...
});

И я расширяю его так:

$.widget("ui.MyExtWidget", $.extend({
            options: {
            Value3: 20,
        }}, $.ui.MyWidget.prototype, {
        myNewMethod: function(){
            alert(this.options.Value1+this.options.Value3);
        }
}

Мне нужно вызвать myNewMethod в моем html.

Мой HTML-код выглядит так:

$("#Div1").MyExtWidget();
$("#Div1").MyExtWidget("myNewMethod");

Я получаю исключение, подобное этому, при использовании приведенного выше кода не может вызвать методы TimeSpanHeader до инициализации;попытался вызвать метод myNewMethod

Как вызвать метод myNewMethod?

1 Ответ

1 голос
/ 21 января 2012

Фабрика виджетов предоставляет способ расширения из существующего виджета с помощью конструктора $.widget:

$.widget("ui.MyExtWidget", $.ui.MyWidget, {
    options: {
        alertText: ''
    },
    myNewMethod: function() {
        alert('Value1 = ' + this.options.Value1);
        alert('alertText = ' + this.options.alertText);
    }
});

Примечание: Конструктор также позаботится о расширении параметров.Этот метод используется в самой библиотеке jQuery UI.Например, у виджета ui.mouse есть опции, и многие другие виджеты наследуются от него и имеют свои собственные дополнительные опции наряду с опциями из ui.mouse.

DEMO


Из фабрики виджетов публикация вики :

Фабрика виджетов - это простая функция глобального объекта jQuery - jQuery.виджет - принимает 2 или 3 аргумента.

jQuery.widget ("namespace.widgetname", / * необязательно - существующий прототип виджета для наследования от / , / Литерал объекта, который станет прототипом виджета * / {...});

Второй (необязательный) аргумент - это прототип виджета, наследуемый от .Например, в jQuery UI есть плагин «мыши», на котором основаны остальные плагины взаимодействия.Чтобы добиться этого, перетаскиваемый, сбрасываемый и т. Д. Все наследуются от плагина мыши следующим образом: jQuery.widget ("ui.draggable", $ .ui.mouse, {...});Если вы не укажете этот аргумент, виджет будет наследоваться непосредственно от «базового виджета» jQuery.Widget (обратите внимание на разницу между строчными буквами «w» jQuery.widget и прописными буквами «W» jQuery.Widget).

...