Как я могу создать несколько редакторов с именем класса - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь создать несколько классических ckeditors.Проблема в том, что я не знаю, сколько у меня будет.Поэтому я инициирую их по className.Это инициаторы редакторов и работают, но не отправлять ничего через AJAX.Поэтому, когда я пытаюсь обновить только текстовую область, я могу отправить последний редактор, потому что window.editor перезаписан.Затем я пытаюсь сохранить в массиве, но я не могу передать th в качестве значения neditor, потому что его a затем выполняет, когда цикл for завершен, поэтому neditor всегда равен 2. Как я могу заставить его работать?Я не очень хорошо понимаю обещания Спасибо!

import ClassicEditor from './ckeditor5-build-classic';

var allEditors = document.querySelectorAll('.usarCkeditor');//i have 2 editors in that case
for (var neditores = 0; neditores < allEditors.length; neditores++) {
    ClassicEditor.create(allEditors[neditores])
        .then(editor => {
            window.editor = editor;//window.editor is alway the last editor
        })
        .catch(err => {
            console.error(err.stack);
        });
}

Это другая версия:

for (var neditores = 0; neditores < allEditors.length; neditores++) {
    window["editor" + neditores] = 'paco';
    ClassicEditor.create(document.querySelector('#' + allEditors[neditores].attributes.id.value))
        .then(editor => {
            console.log(editor);
            window["editor" + neditores] = editor;
            console.log(neditores);//always 2 so it overwrites the array

        })
        .catch(err => {
            console.error(err.stack);
        });
}

//window.editor -> [0] = 'paco';[1] = 'paco';[2]= ckeditor

1 Ответ

0 голосов
/ 05 июля 2019

Обратите внимание, что querySelectorAll возвращает HTMLNodeList, а не массив.

Если вы хотите инициализировать редактор для нескольких элементов с классами, вы можете сделатьэто например таким образом.Все ссылки на экземпляры редакторов будут сохранены в window.editors объекте.

window.editors = {};

document.querySelectorAll( '.editor' ).forEach( ( node, index ) => {
    ClassicEditor
        .create( node, {} )
        .then( newEditor => {
            window.editors[ index ] = newEditor 
        } );
} );

Это рабочий пример: https://codepen.io/msamsel/pen/pXONjB?editors=1010

...