我正在尝试扩展现有的 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);
我如何调用基础初始化或者它真的被覆盖了吗?
最佳答案
如果您替换自动完成小部件,那么您的代码实际上是在递归地调用它自己的 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);
( demo )
关于javascript - 如何替换现有的 Kendo UI 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196902/