我正在尝试使用 CKEditor 5 Framework 制作自定义插件。但是,我无法(通过editor.setData()
)为段落和其他元素(如 span)插入任何属性。有没有办法做到这一点?
谢谢!
我正在尝试使用 CKEditor 5 Framework 制作自定义插件。但是,我无法(通过editor.setData()
)为段落和其他元素(如 span)插入任何属性。有没有办法做到这一点?
谢谢!
CKEditor 5 实现了一个自定义数据模型,您可以在架构介绍指南中了解更多信息。
自定义数据模型的存在意味着编辑器需要知道如何将该模型转换为视图结构(DOM)进行编辑。此外,由于通常编辑器输出 HTML(或结构上“兼容”的格式,如 Markdown、BBCode 等),因此需要进行类似的转换才能从编辑器中获取数据。最后,编辑器需要能够将视图转换为模型,以便您能够将数据加载到编辑器中。
旁注:您可能还希望将模型直接保存到数据库中,这样可以避免将视图转换为模型(on setData()
),但尽管可能,这仍然意味着编辑器需要知道如何将模型转换为视图用于编辑和模型的视图以进行粘贴。
这是什么意思呢?这意味着除非现有编辑器功能可以选择特定内容,否则它将被删除。它根本不会在数据加载时从视图转换为模型,因此会被遗忘。
因此,这一切都与转换器有关。您需要教您的编辑器如何理解 HTML 以及如何呈现 HTML。实际上,您还需要教它如何编辑模型的这些特定部分(此时)(通过配置模式和实现适当的 UI)。
那么,如何编写转换器和配置模式呢?
嗯,这是目前的一个问题,因为现在(截至 2017 年 12 月)我们正处于CKEditor 5 引擎重构的中间。我们拥有的架构很棒,但 API 被证明太难使用,所以我们现在正在改进它们,这意味着我在这里写的任何东西下个月都将失效。所以,相反,我建议查看CKEditor 5 包的源代码(例如,查看基本样式包中的插件)。