CKEditor 4如何在没有用户交互的情况下添加表(即没有对话框)

我已经完成了所有必需的表属性(即行,列数,样式,类,标题样式等)。

当用户点击我的自定义按钮时,我需要添加具有此属性的表,而不通过任何对话框。

我想到显示对话框并用我的数据替换必填字段并触发OK点击。 但这……有点丑陋的解决方案。

请告诉我,这项任务有什么优雅的解决方案吗?

通过实际破解默认值来解决问题,使它们像getter-function一样,并在显示对话框后单击ok按钮:

(警告,咖啡)

 CKEDITOR.on 'dialogDefinition', (ev) -> if ev.data.name is 'table' info = ev.data.definition.getContents 'info' advanced = ev.data.definition.getContents 'advanced' # HACK: default value now returns always value I have control on info.get('txtRows')['default'] = { toString: -> self.ckeditor_table_rows } info.get('txtCols')['default'] = { toString: -> self.ckeditor_table_cols } # setup some normal defaults info.get('txtWidth')['default'] = '' info.get('txtBorder')['default'] = '0' info.get('selHeaders')['default'] = 'row' advanced.get('advCSSClasses')['default'] = 'table table-striped' ev.data.definition.dialog.on 'show', -> # make it create table, once dialog shown this.getButton('ok').click() # hide my own popover-like dialog $('.has-popover').popover('hide') 

这里的Trick是toString方法,每次调用默认值都会尝试转换为字符串。 当这个默认值被放入输入时,就会发生这种情况。