Как установить данные в уже созданном редакторе? - PullRequest
0 голосов
/ 23 октября 2019

Я хочу установить данные на 3 номера. из уже созданных редакторов, которые я не могу сделать.

Я попробовал pt. нет. 2, чтобы установить данные, которые происходят во вновь созданном редакторе, а не в существующем.

  1. Ниже я создаю 3 редактора:
create_editor: function () {
            window.editors = {};
            document.querySelectorAll('.editor').forEach((node, index) => {
                ClassicEditor
                    .create(node, {
                        //removePlugins: [ 'Heading', 'Link' ],
                        toolbar: ['bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote', 'Heading'],
                        //placeholder: 'Type the content here!'
                    })
                    .then(editor => {
                        //console.log(editor);
                        window.editors[index] = editor
                    })
                    .catch(error => {
                        //console.error(error);
                    });
            });
        }
Ниже я пытаюсь установить свои данные для всех моих трех существующих редакторов:
set_editor: function (elem, data) {
            ClassicEditor
                .create(document.querySelector('#' + elem))
                .then(editor => {
                    editor.setData(data);
                })
        }

Данные хранятся в локальном хранилище, и я хочу получить их и установить для них значениеу меня уже 3 созданных редактора, которых сейчас нет.

1 Ответ

0 голосов
/ 23 октября 2019

Ваша проблема здесь в том, что вам нужно получить экземпляр существующего ClassicEditor для его редактирования.

Как указано в этом ответе , вы можете хранить свои экземпляры в глобальной переменной (например,вы уже делаете, но вместо хранения индекса element.id в качестве ключа)

Также из ваших комментариев становится ясно, что вы столкнулись с расой между созданием редактора и набором редактора, поэтому вместо сохранения редактора вwindow.editors сохранить обещание, чтобы вы могли подождать, пока редактор завершит работу, прежде чем устанавливать значение.

create_editor: function () {
    window.editors = {};
    document.querySelectorAll('.editor').forEach(node => {
        window.editors[node.id] =
        ClassicEditor
            .create(node, {
                //removePlugins: [ 'Heading', 'Link' ],
                toolbar: ['bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote', 'Heading'],
                //placeholder: 'Type the content here!'
            })
            .then(editor => {
                //console.log(editor);
            })
            .catch(error => {
                //console.error(error);
            });
    });
}

set_editor: function (elem, data) {
    window.editors[elem].then(editor => editor.setData(data));
}
...