我已经完成了所有必需的表格属性(即行,列数,样式,类,标题样式等)。
当用户点击我的自定义按钮时,我需要添加包含此属性的表,而不需要通过任何对话框。
我想过显示对话框并用我的数据替换必填字段并触发OK点击。但这有点丑陋的解决方案。
请告诉我,这项任务有没有优雅的解决方案?
答案 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
方法。当这个默认值被放入输入时,就会发生这种情况。