如何扩展Kendo编辑器小部件?

时间:2019-07-05 08:35:54

标签: javascript jquery kendo-ui extend kendo-editor

我需要扩展kendo ui编辑器小部件并对其进行自定义。 但是,toolbar.js中存在一个奇怪的错误

因此,我扩展了Editor小部件并定义了init方法。 在初始化方法中,我使用“调用”从父级调用初始化方法。 初始化Editor实例时,我定义了包括“格式”在内的“工具”选项。

我只是扩展了Editor小部件并定义了如下的init方法。

let kendo = window.kendo
let Editor = kendo.ui.Editor

let widget = Editor.extend({
  init: function (element, options) {
    Editor.fn.init.call(this, element, options)
  }
})

kendo.ui.plugin(widget)

init方法的上下文中存在一些错误。 在toolbar.js中 kendo.ui.Editor.defaultTools未定义。...

我该如何解决这个问题?

isCustomTool: function(toolName) {
  return !(toolName in kendo.ui.Editor.defaultTools);
},
TypeError: Cannot use 'in' operator to search for 'formatting' in undefined
    at init.isCustomTool (toolbar.js?a639:509)
    at init.toolGroupFor (toolbar.js?a639:294)
    at init.render (toolbar.js?a639:641)
    at init.bindTo (toolbar.js?a639:322)
    at subclass.init (main.js?d94c:394)
    at new subclass (kendo.core.js?0f57:193)
    at HTMLTextAreaElement.eval (kendo.core.js?0f57:3342)
    at Function.each (jquery.js?eedf:367)
    at kendoJQuery.fn.init.each (jquery.js?eedf:202)
    at kendoJQuery.fn.init.$.fn.<computed> [as kendoEditor] (kendo.core.js?0f57:3341)

1 个答案:

答案 0 :(得分:0)

您应该为自定义窗口小部件提供唯一的名称:

let widget = Editor.extend({
    init: function (element, options) {
        ...
     },
     options: {
         name: 'MyEditor',
         ...
     }
})

Kendo使用“名称”字段在公共名称空间中注册小部件。您用继承的名称定义了一个小部件,因此标准剑道的“编辑器”小部件被覆盖。