CKEDITOR Sharedspaces - 我可以只加载一次自定义按钮和下拉菜单吗?

时间:2018-03-29 21:03:21

标签: ckeditor ckeditor4.x

CKEditor v4.8有关SharedSpaces的问题。我在基于SQL行的循环中动态生成编辑器(内容替换DIV标签 - 内联编辑)。

我只想在循环外加载/调用editor.ui.addButtonaddRichCombo。这可能吗?

     for (var i = 0; i < retrievedRecords.length; i++) {
            var documentBlock = retrievedRecords[i];

         // This next line creates each inline editor with all custom buttons and combo every time through the loop
         // Can I just load the custom buttons and combo once and all new editors use that 1 toolbar?
            createInlineEditor('myID_' + i, content, id);

            var refToEditor = document.getElementById('myID_' + i);
            divContainer.appendChild(refToEditor);
        }

1 个答案:

答案 0 :(得分:0)

sharedspace插件的效果与您想象的差别不大。它不在编辑器之间共享相同的工具栏,但它是顶部和底部工具栏之间的空间。我知道这听起来有点复杂,所以我添加一些图片来说明它:

enter image description here

有一些重要原因可以解决这个原因,但最明显的是,您可以为编辑器配置sharedspace插件的不同插件,并更改工具栏的外观,例如:通过其他按钮。如果您可以共享同一工具栏,则可能无法使用不同编辑器的按钮。

IMO您可以做的最好的事情是简化代码,即在编辑器之间共享配置对象。

var config = {
    on: {
        pluginsLoaded: function( evt ) {
            evt.editor.ui.addButton( 'MyBold', {
                label: 'My Bold',
                command: 'bold',
                toolbar: 'basicstyles,1'
            } );
        }
    }
};

 for (var i = 0; i < retrievedRecords.length; i++) {
        var documentBlock = retrievedRecords[i];

        var editor = createInlineEditor('myID_' + i, content, id, config);

        var refToEditor = document.getElementById('myID_' + i);
        divContainer.appendChild(refToEditor);
    }
相关问题