Ckeditor 5 несколько экземпляров - PullRequest
0 голосов
/ 27 мая 2019

Я хочу динамически инициализировать ckeditors, а позже использовать функцию setData() для каждого. Я попытался это: CKEditor 5 - получить экземпляры редактора , но я получаю ошибку:

Невозможно прочитать свойство 'setData' из неопределенного

const editors = {}; 
function createEditor( elementId ) {
    return ClassicEditor
        .create( document.getElementById( elementId ) )
        .then( editor => {
        editors[ elementId ] = editor;
    } )
        .catch( err => console.error( err.stack ) );
}

$(document).ready( function() {
    createEditor( 'editor1' );
    createEditor( 'director1' );

    console.log(editors.editor1.setData('test')); //error message
});

Можно ли делать то, что я хочу, и если да, что мне делать?

1 Ответ

0 голосов
/ 10 июня 2019

Пожалуйста, смотрите: https://ckeditor.com/docs/ckeditor5/latest/api/module_core_editor_editor-Editor.html#event-ready.

Вы можете установить данные редактора, только когда они полностью загружены. Несмотря на то, что есть событие ready, как вы можете прочитать по ссылке, гораздо более подходящим является обещание, возвращаемое методом create. Ваш код, вероятно, должен выглядеть так:

var editors = [];   
function createEditor( elementId, data ) {
    return ClassicEditor
        .create( document.querySelector( '#' + elementId ) )
        .then( editor => {
        editors[ elementId ] = editor;
        editor.setData( data ); // You should set editor data here
    } )
        .catch( err => console.error( err ) );
}

$(document).ready( function() {
    createEditor( 'editor', 'test' );
    createEditor( 'director1', 'test' );
});
...