ckeditor dataDowncast - 我不能同时使用markerToData 和markerToHighlight

问题描述 投票:0回答:1

我有一个 ckeditor5 自定义插件,我必须将标记转换为数据以保存到数据库中。

这是模型:X[Y]Z

标记名称为“my-highlight:1”

这就是我想要的:

X<my-highlight-start name="1"></my-highlight-start><span class="my-highlight">Y</span><my-highlight-end name="1"></mű-highlight-end>Z

因此,我需要在标记范围的开头和结尾处都有开始/结束标记,并且还需要跨越文本节点。

我能做什么:

X<my-highlight-start name="1"></my-highlight-start>Y<my-highlight-end name="1"></my-highlight-end>Z

X<span class="my-highlight">Y</span><Z

但不能同时进行。

我需要跨度,因为我必须在浏览器中突出显示文本,并且我需要开始/结束标签,因为突出显示可以重叠,并且用户可以为突出显示添加注释。

所以我处理后的输出会是这样的:

X(1)Y(1)Z

  1. Y 的用户评论

对于重叠的情况:

X(1)(2)AB(2)C(3)D(1)Z(3)

  1. ABCD 的用户备注
  2. AB 的用户评论
  3. DZ的用户评论

这是我的插件配置的一部分:

editor.conversion.for('dataDowncast')
    .markerToHighlight(data_markerToHighlightConfig)
    .markerToData(data_markerToDataConfig);

在我看来,两者都不能这样工作。这里只有markerToData 有效。如果我只添加其中之一有效,那么我对markerToHighlight和markerToData的配置就可以了。 我调试了,当我添加两者时,只调用了markerToData。

以下是配置:

const data_markerToDataConfig = {
    model: "my-highlight"
};

const data_markerToHighlightConfig = {
    model: "my-highlight",
    view: { classes: "my-highlight" }
};

线上行动: https://peterborkuti.github.io/ckeditor-bphighlight/

实际操作中,请查看控制台的 getData():

当两个转换器都启用时,只有星号/结束标记(不好)

当仅启用markerToHighlight时,只有span存在(OK)

当仅启用markerToData时,只有开始/结束标记(OK)

提前谢谢您

ckeditor ckeditor5 ckeditor5-plugin
1个回答
0
投票

我从 ckeditor 支持处得到了答案。我不确定是否可以公开分享原始答案,但原因是:

markerToData 和markerToHighlight 在设计上不能一起使用。文档中缺少此信息。为了处理这种情况,应该编写一个自定义转换器。

当我完成自定义转换器后,我会在这里分享。

© www.soinside.com 2019 - 2024. All rights reserved.