1

我正在尝试扩展现有的 KendoUI 小部件(自动完成)。由于我们的应用程序已经使用了很多自动完成小部件的实例,我不想创建一个扩展当前小部件的新小部件,而是替换现有小部件。

我已经找到了这个主题:kendo-ui autocomplete extend,但不幸的是它指向创建一个新主题。

我尝试了以下代码:

   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);

重点是选项的名称属性。如果名称只是“AutoComplete”,则初始化不再起作用:此行以无限循环结束:

kendo.ui.AutoComplete.fn.init.call(this, _element, _options);

我怎样才能调用基本初始化或者它真的被覆盖了?

4

1 回答 1

4

如果您替换自动完成小部件,那么您的代码实际上是在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);

演示

于 2014-03-05T15:13:53.987 回答