该类engine/conversion/mapper
实现了我需要的功能,但是,我对如何最有效地获取/构建此对象有一些疑问。
我想让Mapper
对象处于两种方式(模型到视图和视图到模型)同时可以转换的状态。
a)有没有办法Mapper
从DataController
(例如事件)中获取?
b)如果我必须自己构建Mapper
,那么最好的方法是什么?
我真的很想避免修改DataController
. 但是,我更喜欢一个最有可能与未来的 CKEditor5 版本向前兼容的解决方案。
更新(更多上下文) :基本上这个问题是在方法中使用模型的后续问题。DataProcessor
toData
我从手头的任务开始,在我解释了我到底想对与原始问题更相关的职位做什么之后。
所以,我需要将编辑器数据转换为 BBCode(到目前为止一切顺利),但是我不知道 HTML 是什么(另一个插件会为等设置架构bold
)italic
。因此,我想使用模型进行一些转换,例如,即使我必须自己将属性转换为标签,通过这种方式转换模型中的文本节点似乎更容易。
然而,尽管在我的另一个问题上警告它可能会变得太复杂,我最好从 DOM 转换(我仍然不同意),我决定让它更复杂一点,并从两者转换视图和模型。现在,我们来到了这个问题。
我的转换计划如下:
a) 将 转换viewFragment
为modelFragment
。在这里,我希望以两种方式在它们之间进行所有位置转换。
b)在转换管道上传递,其中有一些用于处理元素和文本节点的通用框架,具有一组可扩展的“转换规则”对象,用于处理paragraph
和bold
˛属性。
在 b) 中,每个“转换规则”可以根据他们想要转换的内容(视图、模型、转换为视图到 DOM 或 Markdown 或其他)来决定,然后以文本形式返回转换结果,即指向下一个元素之前的模型位置待处理,并且在视图中的位置相同。
例如,作为文本,数据处理器将在模型和视图以及文档片段中<p><b>text</b></p><p>...</p>
的第一个位置之前获得一个位置。p
当所有的魔法发生时,它会返回一个对象,即 has {result:'[b]text[/b]\n\n', modelPos:'[par]...[/par]ˇ[par]...[/par]', viewPos: '<p><b>text</b></p>ˇ<p>...</p>'}
,ˇ
合适的位置对象指向的位置。
我希望有点清楚,我正在尝试做什么,它有点长,因为我试图描述这个问题,所以你可以更好地判断我尝试应用于它的解决方案。