ckeditor java 使用,CKEditor5在自定义数据处理器中使用模型

最近,一个similar question was raised on CKE5 GitHub . 问题是关于将JSON数据作为编辑器输出,但是您提出的主题也部分涵盖 .

(...)如何从数据处理器访问模型

直接在模型上运行存在一些问题和风险 . 这不是推荐的东西 . 它在链接的帖子中解释 .

(...)我的问题是如何将其转换为模型/ DocumentFragment

与直接在模型上运行相比,这是一种更好(风险更小)的方法 . 但是,我不得不问 - 为什么要转换模型?也许有更好的解决方案来解决你的问题?

要在视图和模型之间进行转换,必须使用 DataController#toView 和 DataController#toModel . DataController 实例位于 Editor#data . 要在数据处理器中使用它,数据处理器需要访问编辑器实例 .

我建议创建自己的编辑器类,扩展一个CKE5编辑器类 . 然后,在新的编辑器类构造函数中,覆盖数据处理器并传递编辑器实例 . 就像是:

class MyEditor extends ClassicEditor {

constructor() {

this.data.processor = new MyDataProcessor( this );

}

}

class MyDataProcessor() {

constructor( editor ) {

this._editor = editor;

}

toData( viewDocumentFragment ) {

const modelDocumentFragment = this._editor.data.toModel( viewDocumentFragment );

// ...

}

toView( modelData ) {

// ...

this._editor.data.toView( ... );

// ...

}

}

这些只是为了显示方向,而不是工作/测试样本 .

不过,我想知道为什么你坚持使用模型而不是视图来生成编辑器输出 .

BTW . 如果你继续这样实现它,整个过程将会有点愚蠢:) . 首先,您将获得模型数据,然后将其转换为视图(在数据处理器中),然后编辑器将获取视图数据并将其转换回模型:) . 所以也许你也会对覆盖 Editor#setData 方法感兴趣,所以不会发生不必要的转换 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值