CKEditor5 块小部件。如何避免同时需要容器和可编辑元素?

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

我正在将一些 CKEditor4 小部件转换为 CKEditor5。这些是块小部件,我通常遵循 SimpleBox 示例。我基本上是成功的,但以下看似简单的情况却难住了我。

我基本上正在尝试这样做:

<div class="my-list">
<ul>
    <li>Item 1</li>
    <li>Item 2</li>
</ul>
</div>

或者,进一步简化:

<div class="my-list">
  <p>Text</p>
</div>

我无法正确进行编辑。如果我添加如下所示的内部包装,我可以让它正常工作。

<div class="my-list">
  <div class="my-list-inner">
    <p>Text</p>
  </div>
</div>

这就像 SimpleBox 中的描述元素。我将回调驱动的转换器与 elementToElement 函数一起使用。当我向下进行编辑时,my-list 使用 writer.createContainerElement() 和 toWidget()。 my-list-inner 使用 writer.createEditableElement() 和 toWidgetEditable() 函数。效果很好。

如果我不想要内包装纸,我的问题就开始了。如果 my-list 是一个使用 toWidget() 的容器,那么它看起来不错,但当然它是不可编辑的。如果 my-list 是使用 toWidgetEditable() 的可编辑元素,那么它可以工作,但看起来不像小部件。即,在编辑时,它没有获得带有上面和下面插入按钮等的框架,并且(我知道这里的语言含糊不清)只是感觉不对。

我们有来自 CKEditor4 的现有标记,没有内部包装器,所以我们不想引入它。它使向上转换变得复杂,因为它需要同时处理新的和旧的标记。当然,我实际上只需要编辑向下转换的额外包装器,而不是数据向下转换,但我发现很难更改编辑向上转换中的结构。

我知道我在这里遗漏了细节,但我希望有人能认识到一般问题。我觉得我缺少一个简单的概念。我尽量不让事情变得比我需要的更复杂。

谢谢

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