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

时间:2013-11-04 04:39:11

标签: javascript jquery ckeditor

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

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

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

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

1 个答案:

答案 0 :(得分:0)

通过实际破解默认值来解决问题,使它们像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')

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