BUG/[问题]:如何在添加/挂载时正确包装组件?
你好,@artf, [可复制链接](https://codepen.io/Logeshwaran-codepen/pen/raLJpYb) 我用'component.replaceWith()'和UndoManager一起运行时也遇到崩溃。 这只发生在编辑器生命周期事件中触发“replaceWith()” (例如 'change:status', 'component:selected', 'component: deselect') 在撤销时,GrapesJS 尝试恢复旧组件的选择/状态, 但它已不存在于父集合中,导致以下错误: “无法读取未定义的属性(读取'indexOf')” 同样的“replaceWith()”逻辑在 Tr...
阅读下方完整回答 ↓问题
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v128 可复制演示链接 https://jsfiddle.net/fjyk6n4a/2/ 描述一下那个虫子 你好,@artf, 我目前正在尝试将一个组件包裹在一个截面组件中,如果它还没有被包裹的话。我正在连接 component:mount 事件,并用 section 组件替换新增组件(该组件子节点为新增组件)。 我的代码大致是这样的: “''js editor.on('component:mount', (component) => { if (component.parent().attributes.tagName !== 'body') 返回; 如果 (component.is(“截面”)) 返回; component.replaceWith({ 类型:“section”, 组件:组件 }); }) ``` 我遇到的问题是UndoManager的栈和当前的情况并不完全一致。加叠和包裹后,栈有3个条目:移除原始组件、添加截面和添加原始组件。点击撤销时,该部分会被移除,原始组件保留。 但它有bug,因为它无法移除,也不太存在,因为堆栈条目没有正确反映这些更改(可能缺少初始添加)。 如何复制我描述的内容:打开可重现的演示链接添加文本组件(在分层中可见,在剖面中被收装)点击Ctrl+...
回答(2)
你好,@artf, [可复制链接](https://codepen.io/Logeshwaran-codepen/pen/raLJpYb) 我用'component.replaceWith()'和UndoManager一起运行时也遇到崩溃。 这只发生在编辑器生命周期事件中触发“replaceWith()” (例如 'change:status', 'component:selected', 'component: deselect') 在撤销时,GrapesJS 尝试恢复旧组件的选择/状态, 但它已不存在于父集合中,导致以下错误: “无法读取未定义的属性(读取'indexOf')” 同样的“...
谢谢你举报,@rhoenerSBS。 关于BUG/[问题]:如何在添加/挂载时正确包装组件?的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周期 editor.on('component:mount', (c) =>...
相关问答
通过相似的问题讨论继续研究。
问题 #5641
Undomanager.remove() 不工作
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome v91可复制演示链接 https://codepen.io/Harshsne/pen/WNgZzPE描述一下那个虫子 如何复现这个漏洞?将图像附加到画布上并关闭图像模态。(所以该组件会从...
问题 #4763
_undoexc状态开放
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Firefox 106可复制演示链接 https://grapesjs.com/demo.html描述一下那个虫子 你好, 当我从 0.19.5 升级到 0.20.1 时,我注意到用 'editor....
问题 #6696
在启用UndoManager的生命周期事件中调用component.replaceWith()时崩溃
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://codepen.io/Logeshwaran-codepen/pen/raLJpYb 描述一下那个虫子 如何复现这个漏洞? 选择canvas中可用的组件...
问题 #5379
组件的类别修改不会自动检测
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 版本 116可复制演示链接 https://jsfiddle.net/h5b0ndvL/1/描述一下那个虫子 当组件在画布中重新渲染时,模型定义中添加了一个新属性会被渲染,但当组件渲染到...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
GrapesJS DevTools: A Developer Panel Inside Your Editor
If you've ever debugged GrapesJS with console.log(editor.getSelected()) and a dozen throwaway event listeners — this post is for you.
教程
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
教程
Big Updates: TinyMCE 8 and Placeholder 2.0 for GrapesJS
In May we shipped major updates to two of our most popular GrapesJS plugins — TinyMCE Inline Text Editor and Placeholder.
浏览插件分类
直接跳转到市场上的插件分类页面。