我在玩 CKEEditor5,并尝试创建一个自定义数据处理器。我想在toData
转换中使用模型,但是方法是用view/DocumentFragment
对象调用的。所以我的问题是如何将其转换为model/DocumentFragment
对象(或如何从数据处理器访问模型)。
更新(因为它不适合评论):让我尝试更详细地解释我到底尝试做什么(或者到目前为止我已经做了)。我想出了如何使用访问模型本身,但这似乎是一个糟糕的解决方案,因为您也指出了这一点。
所以基本上我想创建一个DataProcessor
将编辑器数据转换为 BBCode,我猜这听起来很合理。
一方面,该toView
方法很简单,因为可以假设已经实现了 BBCode 到 HTML 的转换(在我的例子中)。从 HTML 加载编辑器数据似乎很简单(通过 Markdown 处理器使用的相同过程)。
另一方面,从模型数据而不是视图转换为 BBCode 似乎更容易。主要是因为view/DocumentFragment
对象和视图树的其余部分几乎只是 DOM 或 HTML 的另一种表示。我真的不在乎粗体是否是<b>
或者<strong>
我只是想知道text
节点是否具有bold
属性。
通过使用该模型,我希望使用语义而不是 HTML 中使用的表示。基本上将所有 HTML 标签映射到它们的 BBCode 等价物似乎有点毫无意义(即使 CKE5 在提供一致的 HTML 标签方面做得很好)。所以从我的角度来看,使用模型更有意义。从语义表示转换为“数据格式”比转换为“数据格式”(视图树、DOM、HTML、摩尔斯电码)然后创建“表示图”更容易。
长期以来,阻碍我们使用 RTE 或 WYSIWYG 编辑器的正是从 HTML 转换为 BBCode 的难度。现在 CKE5 有了模型,它似乎很容易转换为任何东西,因为它不仅独立于 HTML 格式,还独立于编辑器中显示的 HTML(这不能说关于视图树,因为它正是编辑器 - 至少它不是 contenteditable 产生的任何东西,但仍然不够好)。
另外:我刚刚做了一个Plugin
设置DataProcessor
,因为这也是 Markdown 功能所做的(在某处的文档中)。这是个坏主意吗?
再次感谢您的回答。