Как я могу заменить существующий виджет Kendo UI?
Я пытаюсь расширить существующий виджет KendoUI (автозаполнение). Поскольку наше приложение уже использует много экземпляров виджета автозаполнения, я не хочу создавать новый виджет, который расширяет текущий, а скорее заменяет существующий.
Я уже нашел эту тему: расширение автозаполнения kendo-ui, но, к сожалению, это указывает на создание нового.
Я попробовал следующий код:
var plg = kendo.ui.AutoComplete.extend({
options: {
name: 'AutoCompleteMyOne'
},
init: function (_element, _options)
{
kendo.ui.AutoComplete.fn.init.call(this, _element, _options);
/*...*/
}
});
kendo.ui.plugin(plg);
Точка является атрибутом имени опций. Если имя только "Автозаполнение", инициализация больше не работает: эта строка заканчивается бесконечным циклом:
kendo.ui.AutoComplete.fn.init.call(this, _element, _options);
Как я могу вызвать инициализацию базы или она действительно перезаписана?
1 ответ
Если вы замените автозаполненный виджет, то ваш код будет вызывать свой собственный init
метод рекурсивный. Поэтому вам нужно сохранить существующий метод и вызвать его, например, так:
var plg = (function (init) {
return kendo.ui.AutoComplete.extend({
options: {
name: 'AutoComplete'
},
init: function (_element, _options) {
// modify the placeholder
_options.placeholder += " (custom)";
init.call(this, _element, _options);
/*...*/
}
});
})(kendo.ui.AutoComplete.fn.init);
kendo.ui.plugin(plg);
( демо)