Получить все элементы типа в CKEditor 5 - PullRequest
0 голосов
/ 16 апреля 2020

Мой редактор содержит пользовательские элементы, созданные следующим образом:

this.editor.model.change( writer => {
    const id = `a${ Math.random().toString().replace('.', '') }`;

    const autocomplete = writer.createElement( 'autocomplete', { 'data-id': id );

    this.editor.model.insertContent( autocomplete );
} );

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

Есть ли что-то вроде querySelectorAll('autocomplete') для модели редактора?

1 Ответ

0 голосов
/ 17 апреля 2020

Возможно использование range.getWalker.

const findNodes = function(writer, type, root) {
    const nodes = [];
    const range = writer.createRangeIn( root );

    for ( const value of range.getWalker({ ignoreElementEnd: true }) ) {
        const node = value.item;

        if ( node.is( type ) ) {
            nodes.push(node);
        }
    }

    return nodes;
};

this.editor.model.change( writer => {
    const autocompletes = findNodes(writer, 'autocomplete', this.editor.model.document.getRoot());
} );
...