Вызов метода расширенного виджета jquery
У меня есть виджет 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 ответ
Фабрика виджетов позволяет расширять существующий виджет с помощью $.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.
Из вики-сообщения Фабрики Виджетов:
Фабрика виджетов - это простая функция глобального объекта jQuery - jQuery.widget, которая принимает 2 или 3 аргумента.
jQuery.widget ("namespace.widgetname", / * необязательно - существующий прототип виджета для наследования от /, / литерал объекта, который станет прототипом виджета */ {...});
Второй (необязательный) аргумент - это прототип виджета для наследования. Например, в jQuery UI есть плагин "мыши", на котором основаны остальные плагины взаимодействия. Чтобы добиться этого, перетаскиваемый, сбрасываемый и т. Д. Все наследуются от плагина мыши следующим образом: jQuery.widget( "ui.draggable", $.ui.mouse, {...}); Если вы не укажете этот аргумент, виджет будет наследоваться непосредственно от "базового виджета" jQuery.Widget (обратите внимание на разницу между строчным "w" jQuery.widget и прописным "W" jQuery.Widget).