Как я могу заменить существующий виджет 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);

( демо)

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