Report an issue

guide保存数据而不包含建议

有时您可能需要保存包含所有已接受或已放弃建议的编辑器数据。常见情况包括文档预览或打印。

# 跟踪更改数据插件

要启用保存数据而不包含建议,您需要使用 TrackChangesData 插件。它在跟踪更改包中可用。导入它并将其添加到您的设置中

import { TrackChangesData } from 'ckeditor5-premium-features';

// More imports.
// ...

ClassicEditor.builtinPlugins = [ TrackChangesData, /* ... */ ];

然后您可以使用 跟踪更改数据插件 API 获取包含所有已接受或已放弃建议的编辑器数据

const data = await editor.plugins.get( 'TrackChangesData' ).getDataWithAcceptedSuggestions();

请注意,此方法是异步的(它返回一个用编辑器数据解析的 promise)。

# 配置跟踪更改数据插件

在大多数情况下,不需要对跟踪更改数据插件进行任何配置。但是,有时运行跟踪更改数据插件需要更多努力。

通常,跟踪更改数据插件使用一个临时的编辑器实例来加载当前数据,接受或放弃建议,然后获取编辑器数据。

这可能会在以下情况下出现一些问题

  • 如果在编辑器初始化后执行了一些操作(例如,为您的自定义插件加载某种数据),
  • 如果您使用自己的自定义编辑器类,其 API 与 ClassicEditor 不同。

在这些情况下,您可以提供自己的回调作为跟踪更改数据插件的配置参数

{
    trackChangesData: {
        editorCreator: ( config, createElement ) => {
            // Custom callback.
            // ...
        }
    }
}

回调传递了两个参数

  • config - 用于初始化编辑器的编辑器配置。
  • createElement - 一个用于创建 DOM 元素的函数,如果您需要一个(或多个)来初始化您的编辑器。通过此函数创建的 DOM 元素是隐藏的,将在插件完成其工作后清除。

回调应该返回一个用编辑器实例解析的 promise。

一个使用多根编辑器的回调示例,该编辑器需要在 .create() 方法的第一个参数中传递多根。

{
    trackChangesData: {
        editorCreator: ( config, createElement ) => {
            return CustomMultiRootEditor.create( {
                header: createElement(),
                content: createElement(),
                footer: createElement()
            }, config );
        }
    }
}