CKEditor 5 событие изменения не всегда срабатывает - PullRequest
0 голосов
/ 30 октября 2018

Я использую CKeditor v11.1.1 с CountableJS для монтирования слов.

В настоящее время я прикрепляю исчисляемое число так:

editor.model.document.on( 'change:data', ( evt, data ) => { //call countableJS wordcount });

Это нормально работает для обычной печати и возврата на задний план, но завершается ошибкой, когда я CTRL+A -> Delete или CTRL+V вставляю некоторый текст. Событие не запускается, поэтому количество слов не обновляется, пока я не начну печатать снова.

В документах конкретно говорится: «[изменение: данные] запускаются для изменений, которые влияют на данные редактора», но это не всегда так. Я также пытался слушать только change, но он вел себя аналогично.

Я что-то здесь неправильно понимаю? Могу ли я прослушать еще одно событие?

1 Ответ

0 голосов
/ 30 октября 2018

Я только что проверил это, и он прекрасно работает, когда я нажимаю Ctrl + Удалить или Ctrl + V, Вы можете проверить это на https://jsfiddle.net/auxe23b7/1/:

ClassicEditor
    .create( document.querySelector( '#editor' ) )
    .then( editor => {
        console.log( editor );

        editor.model.document.on( 'change:data', ( evt, data ) => {
            console.log( data );
        } );
    } )
    .catch( error => {
        console.error( error );
    } );

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

Итак, у вас есть ошибка в вашем коде или ... или я не знаю :)

...