在change()中停止操作

MTi*_*ted 12 ckeditor5

有没有办法在model.document.on('change')中停止删除操作?

我用这段代码听改变:

model.document.on('change',(eventInfo,batch) => {
// My code here.
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,就我所知,并且可以检查所有变化.但似乎没有办法拒绝改变.

我尝试在不同的地方调用eventInfo.stop()和reset().这两种方法都会停止更改,但 如果我尝试停止删除操作,则以后总是会导致 模型 - nodelist-offset-out-of-bounds: exception.

我想要做的是更改文本删除的工作方式,因此当用户删除文本时,我创建了一个标记,用于标记哪些文本已被用户"删除",而不是从编辑器中删除文本.(用于可选的更改控制).

Jan*_*tis 4

您可以在更改后保存数据值,并在删除发生时“重置”为先前的值,而不是停止更改:

var oldData = '';
var editor = ClassicEditor
    .create(document.querySelector('#editor'))
    .then(editor => {
        editor.model.document.on('change',(eventInfo, batch) => {
           if(oldData.length > editor.getData().length) {
           // or use eventInfo.source.differ.getChanges() and check for type: "remove"
                editor.setData(oldData);
            }
            oldData = editor.getData();
        });
    })
    .catch( error => {
        console.error( error );
    });
Run Code Online (Sandbox Code Playgroud)

请注意,您可以使用并检查是否存在“删除”类型的更改来循环遍历发生的更改,而不是检查数据长度。eventInfo.source.differ.getChanges()