GrapesJS 问题

已收录 3,464 个 GitHub 问题 370 个已解决 · 90 个待解决 搜索、筛选并探索经过实战检验的答案。

找到 466 个问题

🔍 components
#51992023年6月23日作者 rmadeiraneto3 个回答
0 个反应

组件属性的变化会在所有实例中重现,而不仅仅是一个实例

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v114 可复制演示链接 https://jsfiddle.net/rmadeiraneto/t659usxv/39/ 描述一下那个虫子 如何复现这个漏洞?进入块列表,将自定义组件“示例”拖到画布上画布中显示三个来自默认属性(数组)的元素选择“示例”组件进入特质面板,点击加号图标几次这将将示例组件属性中的项目添加到数组中,并在页面中绘制将另一个示例块拖入画布注意你添加到数组中的项目也在该组件的新实例中显示 预期的行为是什么? 在更改第一个组件的属性后创建第二个组件实例时,通常第二个组件的属性应是默认值 '[1,2,3]' 中定义的第一个...

artf

感谢@rmadeiraneto的报告。是的,不幸的是,如果你以这种方式变异数组/对象属性,这就是个问题,为了避免这种情况,你有两个选择:避免直接变异(更新时分配新引用)将“默认值”定义为函数 “''js 默认值: () => ({ customArray: [1,2,3] }), ``` 但不幸的是......第二个选项现在😅不行,我会在下一个版本修复它

rmadeiraneto

@artf使用默认值作为函数是可行的,感谢你的快速回复和提供解决这个问题的替代方案。 关于第一个建议,我认为问题不在于人们是否应该变异或不变异对象,因为我们讨论的是使用提供的方法(集合)。抱歉我没时间看源代码,但你很可能在“set”方法里变了默认对象,可能是因为引用来自组件生命周期的早期。同样,没有深入看代码,我假设当你将默认值与组件属性合并时,你保留了对默认对象的引用,而不是使用会返回副本的合并方法,比如 from immutable。 我会尽量找时间研究代码,并提出更具...

ClaudeCode

谢谢你举报,@rmadeiraneto。 关于组件属性的变化在所有实例中重现,而不仅仅是一个实例的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“c...

#51842023年6月14日作者 acantepie2 个回答
1 个反应

Ckeditor组件工具栏未正确刷新

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 版本 113.0.5672.126(Build officiel)(64 位)可复制演示链接 https://grapesjs.com/demo-newsletter-editor.html描述一下那个虫子 如何复现这个漏洞?访问演示网站:https://grapesjs.com/demo-newsletter-editor.html清空画布并添加文字块两次: https://github.com/GrapesJS/grapesjs/assets/12775815/b6bf6a1a-6907-4054-a93b-f5939efb353f => 第一个工具...

artf

谢谢@acantepie请在[proper repo](https://github.com/GrapesJS/ckeditor)中打开问题,因为这不是核心相关的问题

ClaudeCode

谢谢你举报,@acantepie。 关于ckeditor组件工具栏没有正确刷新的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somet...

#51752023年6月10日作者 krishnaeverestengineering4 个回答
0 个反应

移动方法没有按预期工作

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://codesandbox.io/s/adoring-margulis-873kdv 描述一下那个虫子 背景 移动组件的方法没有按预期工作。 这段代码没有按预期工作。 这段代码应该能用。当 sameParent 是 false 且目标索引为 1 时,比如 0 到 1 的位置就不会移动到行为准则 [X] 我同意遵守本项目的行为准则

krishnaeverestengineering

解决方法:https://github.com/GrapesJS/grapesjs/pull/5176

artf

谢谢@krishnaeverestengineering,但这实际上是将组件移入同父节点时的预期行为。这是因为“at”还应考虑组件本身的索引。 所以,如果你尝试将“组件1”移到索引0或1,什么都不会发生。如果你需要把它移到“组件2”以下,你必须标注索引2

krishnaeverestengineering

谢谢@krishnaeverestengineering,但这实际上是将组件移入同一父节点时的预期行为。这是因为“at”还应考虑组件本身的索引。 所以,如果你尝试将“组件1”移到索引0或1,什么都不会发生。如果你需要把它移到“组件2”以下,你必须标注索引2 但我不太理解它的使用场景。通常在最后版本中,'at '应该算是索引。那怎么把组件从0移到索引1呢?

#51732023年6月9日作者 FaisalShaikhHA3 个回答
1 个反应

编辑。Css.setRule API 没有按预期工作,它没有更新现有规则。

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 版本 112.0.5615.137(官方构建)(arm64) 可复制演示链接 https://jsfiddle.net/yhj6qa1u/6/ 描述一下那个虫子 如何复现这个漏洞?选择一个组件,并使用样式管理器添加样式。使用'编辑器'。为了为该组件设置某种样式,请注意之前的样式已被移除,但根据文档,它应该会更新 CSS 规则。 预期的行为是什么? 它应该更新现有规则。 目前的行为是什么? 它取消了现有规则,而不是更新现有规则。 https://github.com/GrapesJS/grapesjs/assets/102785785/28560d08...

artf

你好,@FaisalShaikhHA这是预期中的行为,但我猜“setRule”的文档有点误导。规则实际上是更新的(不会用相同的选择器创建新的规则),但样式只是被替换。 如果你需要添加新样式而不是替换它们,这就是你应该做的 “''js const selector = '#${this.getId()}'; const rule = 编辑器。Css.getRule(selector); 编辑。Css.setRule(selector, { ...统治?getStyle(),...

FaisalShaikhHA

感谢@artf的澄清

ClaudeCode

谢谢你举报,@FaisalShaikhHA。 关于编辑器的好问题。css.setRule API 没有按预期工作,它没有更新现有规则。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', (...

#51642023年6月6日作者 shomeel2 个回答
0 个反应

默认情况下,组件是用我的演示项目中的表格创建的,但演示用flex属性来创建组件

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 版本 112.0.5615.49(官方构建)(x86_64) 可复制演示链接 https://jsfiddle.net/shomeelconovo/k7L2rthg/1/ 描述一下那个虫子 我需要关于grapes.js的帮助。我创建了一个项目,每当我在 Canvas 中放置组件时,默认每个组件都有显示:表属性。不过我grapes.js试过官方演示,演示里每个元素默认都是显示:flex。可能出了什么问题?为什么本地项目默认属性不同?行为准则 [X] 我同意遵守本项目的行为准则

artf

https://github.com/GrapesJS/grapesjs/discussions/5163#discussioncomment-6162516

ClaudeCode

谢谢你举报,@shomeel。 默认组件是用我的演示项目中的表创建的,但演示用flex属性创建组件的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)...

#51562023年5月31日作者 loclovepop3 个回答
0 个反应

手机屏幕上拖放不了,连加葡萄触摸都做不到

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome,IOS可复制演示链接 https://www.lovepoptestsite.com/products/disney-s-hocus-pocus-black-flame-candle-pop-up-card?variant=40356218077273&previewlink=124907487321 密码:ilovecards描述一下那个虫子 如何复现这个漏洞? 我试过用 Grapejs 编辑器在手机屏幕拖放,一切都没问题。但我尝试在注入编辑器测试存储后做,结果并没有达到预期效果。 预期的行为是什么? ...它应该允许拖放组件 目前的行为...

loclovepop

[screencast-www.lovepoptestsite.com-2023.06.01-001711.webm](https://github.com/GrapesJS/grapesjs/assets/124012807/a171fbbb-dd8b-45a6-901c-d0c2519c8304) 这是关于bug的视频

artf

我看到触摸插件是正常工作的,确保加载时启用移动设备(比如加载后不要模拟),这样聚合物填充才能正确加载。

ClaudeCode

谢谢你举报,@loclovepop。 关于手机屏幕无法拖放,连加葡萄-触摸都不能的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”...

#51542023年5月31日作者 jmtt894 个回答
6 个反应

TS2416:类型为“PropertyStack”中的属性“_up”不可分配给基类型“PropertyComposite”中的同一属性<PropertyStackProps>

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? ---- 可复制演示链接 https://codesandbox.io/p/sandbox/pensive-browser-mfhxp8 描述一下那个虫子 如何复现这个bug?创建Angular项目添加 grapeJS 依赖在tsconfig(用于骨干网)中包含“allowSyntheticDefaultImports”: true”为 GrapeJS 创建包装组件在项目中使用包装组件 预期的行为是什么? 渲染葡萄JS编辑器目前的行为如何? 构建时就坏了 行为准则 [X] 我同意遵守本项目的行为准则

marktamis

我把一些tsconfig设置从一个正在运行的vite gjs项目复制到我的stenciljs项目里,现在它运行正常了。我觉得你需要对你的 Angular TSCONFIG 做些调整,这样它就不会再抛出错误了 下面是我正在运行的 Stencilsjs TSCONFIG: 似乎正是这个功能让编译成为可能的原因

Deepakanandrao

“skipLibCheck”:true, “skipLibCheck”: true “”成功了。谢谢@marktamis 👍

artf

是的,在我找到该TS输出😞的修复之前,这里需要用“skipLibCheck”: true”

#51412023年5月24日作者 rajevar3 个回答
1 个反应

组件在更新性状时重置属性值(仅首次)

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 113.0.5672.63 可复制演示链接 https://jsfiddle.net/rajevar/zLs8q97f/4/ 描述一下那个虫子 这是针对这次讨论 https://github.com/GrapesJS/grapesjs/discussions/4759 如何复现这个漏洞? https://jsfiddle.net/rajevar/zLs8q97f/4/从块中选择Text CAT:Basic组件,拖曳到画布。 步骤1之后的代码2. HTML '<div class=“text-primary” id=“ixci”>将...

rajevar

抱歉,是我错了。我没用最新的。

artf

@rajevar我无法用最新版本复现,你确定你用的是最新版本吗?

ClaudeCode

谢谢你举报,@rajevar。 关于组件在更新特质时重置属性值(仅首次)的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something chan...

#51312023年5月20日作者 sdimitrenco2 个回答
0 个反应

JSON.stringify 之后,组件并非所有字段都存在

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 铬可复制演示链接 https://jsfiddle.net/sdimitrenco/rn8u4pc0/7/描述一下那个虫子 我不确定这是不是bug,但对我来说,这种行为看起来很奇怪 我有一个组件列表,包含组件ol和组件LI。 那个代码,代表阻挡 组件列表的模型 这个模型用于 ol 分量 以及锂分量的模型 如你所见,所有模型都包含类型和标签名称,在 Grapes 内部也正常,但如果我尝试转换成 json,比如 JSON.stringify(this.grapesInstance.getComponents()),我有 json 丢失了带标签名的所有字段,看...

artf

如果属性的值与默认定义相同,则跳过。这由 ['avoidDefaults'](https://github.com/GrapesJS/grapesjs/blob/e217dc75d463a84333ee4d9f37216f4f56c77024/src/editor/config/config.ts#L250-L256) 配置选项控制,强烈建议尽量保持 JSON 小。

ClaudeCode

谢谢你举报,@sdimitrenco。 After JSON.stringify 组件没有所有字段的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)...

#51102023年5月13日作者 yashvi20262 个回答
0 个反应

“enableEditing”附加在视图上,你可以从模型中获取它的实例,所以选择该组件,在控制台“editor.getSelected().view.enableEditing()”中执行。

我正在获得 editor.getSelected().view.enableEditing();不是函数

artf

请避免在未遵循问题模板的情况下打开错误问题。 你可以用一个合适的描述和用例来开启新的讨论。

ClaudeCode

谢谢你举报,@yashvi2026。 感谢你分享关于'enableEditing'被附加到视图上的报告,你可以从模型中获取它的实例,所以选择组件,在控制台'editor.getSelected().view.enableEditing()'中运行。为了帮助团队调查并优先排序: 请提供: 一个最小可复现的例子(CodeSandbox/JSFiddle) 你的GrapesJS版本号 浏览器和操作系统信息 浏览器控制台的任何错误信息 重现问题的步骤 最有帮助的是什么: 简约代码示...

浏览所有主题