2

我看到Writer该类具有插入文本的方法。但是,我不明白这些方法中的哪一种是在编辑器中插入 HTML 的正确方法。

解释

我的案例场景是:用户可以创建某些内容模板并保存它。稍后用户应该能够将相同的内容插入编辑器并开始修改。

我正在使用以下代码处理此问题

activeCKE.model.change( writer => {
    writer.insertElement( "text to insert", activeCKE.model.document.selection.getFirstPosition() );
    activeCKE.setData(activeCKE.getData()); // to refresh the contents

}

它适用于“**text**”,但不适用于“ <strong>text</strong>”。后者按原样显示。

所以我的问题是;以编程方式插入已经使用类之Writer类的东西创建的 HTML 字符串的正确方法是什么?

我看到 中有一个模板的概念ui/template,但是我不清楚如何转换editor.getData()为该模板。

请注意:我不想给用户一个 HTML 编辑界面。我只是想创建模板让他的生活更轻松。因此,我的问题与基于“查看源代码”的问题无关。

4

1 回答 1

4

当我继续我的研究帖子问这个问题时,我登陆了常见问题解答,在那里我得到了答案。

const viewFragment = activeCKE.data.processor.toView( "<p>HTML Text</p>" );
const modelFragment = activeCKE.data.toModel( viewFragment );

activeCKE.model.insertContent( modelFragment, activeCKE.model.document.selection );

这满足了我的用例。但是,我鼓励社区发布其他可能的变体,例如使用Template类。特别是因为任何类型的标签(br,p等)导致的换行符都被过滤掉了。

有兴趣在CKEditor 5中显示源代码并允许对源代码进行操作的开发人员,可以创建一个在对话框(或他们喜欢的东西)中显示内容的插件,editor.getData()然后重置编辑器的内容并以类似于以下方式插入内容上面演示的那个。

于 2018-04-26T13:41:00.980 回答