问题 #2673✓ 已解决提出于 2020年3月20日作者 qtarant4 个反应

组件更改后刷新DOM树的功能

快速解答作者 qtarant3

我已经解决了我的问题。 关键代码是“rte:disable”事件,当富文本编辑器(rte)关闭时触发。 还有一点很重要,它被编辑的内容不在组件模型中,只在其视图里,所以你必须用这些内容刷新模型。 相关代码如下: 'editor.on('rte:disable', (componentView) => { const model = componentView.model; const innerHTML = componentView.$el[0].innerHTML; const contentModel = model.get('content'); if (contentModel !== innerHTML) { mode...

阅读下方完整回答 ↓

问题

你好。 我正在用这款神奇的软件开发一个网站。现在,我正在定制编辑器,发现了一个无法继续的任务。 我用的是ckeditor插件,效果正常。在 ckeditor 工具栏里,我有选项在文本内嵌插入图片。它运行得很好,但问题是我希望 GrapesJS 能像往常一样识别这张图片作为组件(我在 GrapesJS 里也有图像组件和块块),比如文本版本完成后。 其理念是在版本(由 ckeditor 插入的图片)完成后(如果可能的话)刷新 de component DOM。 我查过 API,但没找到任何能刷新组件 DOM 的函数,让 GrapesJS 知道图像组件。 最后一点,如果我把内容保存到数据库并重新加载,GrapesJS 会加载整个 DOM,而图片就是一个 GrapesJS 组件。 有没有函数可以逐个刷新组件树? 如果我在ckeditor上插入段落,在GrapesJS上把段落作为组件,也会出现同样的问题。在数据库保存并重新加载后,段落会被识别为组件。

提前感谢大家。

回答(2)

👍 最有帮助qtarant2020年3月23日

我已经解决了我的问题。 关键代码是“rte:disable”事件,当富文本编辑器(rte)关闭时触发。 还有一点很重要,它被编辑的内容不在组件模型中,只在其视图里,所以你必须用这些内容刷新模型。 相关代码如下: 'editor.on('rte:disable', (componentView) => { const model = componentView.model; const innerHTML = componentView.$el[0].innerHTML; const contentModel = model.get('content'); if (contentModel !...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

浏览插件分类

直接跳转到市场上的插件分类页面。