#35942021年7月6日作者 maxtsh3 个回答
版本:0.17.19 你能重现演示中的这个bug吗?不会,因为是全屏,没有父容器滚动功能。 预期的行为是什么? 悬停状态干部以查看部件位置的变化 详细描述那个漏洞 当我想选择或悬停在特定组件上时,由于父滚动,干部位置显示错误。 在0.17.19之前没有这种情况,当时还算正常。 你能上传截图、截图或实时演示吗?是的 
artf
如果可滚动元素不是编辑器的父节点,你可能需要这个选项 https://github.com/artf/grapesjs/blob/dc45604962e4e6a4a075f19d5de67090bac15fa5/src/editor/config/config.js#L157-L163
no-response[bot]
由于我们请求原作者提供更多信息未获回应,本期已自动关闭。仅凭当前期刊中的信息,我们没有足够的信息采取行动。如果您有答案或找到我们需要的答案,请随时联系我们,以便我们进一步调查。
ClaudeCode
谢谢你举报,@maxtsh。 当编辑器的父滚动时,将鼠标悬停在组件上,显示错误位置的问题似乎是竞赛条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队...
#35892021年7月3日作者 lbmir3 个回答
你好,首先我想说这个项目非常棒,谢谢你! 我用了GrapeJS Demo示例中的代码,并添加了远程文件的保存和加载数据,这就是我的storageManager代码: savenow.php文件代码: loadnow.php文件代码: 保存更改时一切正常,但之后如果按“刷新页面,它就会加载修改前的旧内容。 但如果我用硬刷新**页面,页面内容正常,显示的是我最近的修改。 用户刷新页面时,我怎样才能保留保存的内容? 看起来它会在某个地方保存旧内容,刷新后重新加载,但没有用我定义的存储管理器里的 urlLoad。 也许有办法禁用旧内容的加载,只用存储管理器里的urlLoad?
lbmir
和[https://github.com/artf/grapesjs/issues/2963](https://github.com/artf/grapesjs/issues/2963)上的问题一样。 但我的情况是,只有在硬刷新后才加载内容
artf
听起来更像是你这边的问题,网页应用并不区分刷新和硬刷新,实际上硬刷新更像是没有浏览器本地缓存的刷新。试着从检查器那里确认你的加载调用是否真的返回了正确的数据(比如,你可能有一个启用了某种缓存的网页服务器)。
ClaudeCode
谢谢你举报,@lbmir。 关于自动加载存储在页面刷新时无法正常工作,这个问题问得很好。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something c...
#35882021年7月3日作者 ap0l02 个回答
你好, 太棒的项目了!然而,在查看了 Grapejs Touch 插件后,从移动设备上使用编辑器仍然非常困难。 有没有办法简化界面,让移动设备更容易自定义?这主要是针对“新闻通讯”选项。 非常感谢!希望我没有违反任何规则
artf
不幸的是,目前的用户界面就是这样,另一种选择是自己打造更适合移动端的用户界面。
ClaudeCode
谢谢你举报,@ap0l0。 关于问题:有没有办法让GrapeJS移动编辑器可用?GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something chang...
#35872021年7月2日作者 milan-holes2 个回答
你好。有没有可能创建 Grapesjs 实例,而不生成整个编辑器?我创建了带有异步数据的自定义组件,需要在Node中创建后端服务,该服务从存储的组件生成HTML输出,并填充API的数据。 现在我出现错误了:ReferenceError: 窗口未定义 谢谢。
artf
我会把它关闭为重复 https://github.com/artf/grapesjs/issues/3399
ClaudeCode
谢谢你举报,@milan混蛋们。 错误错误:ReferenceError: 窗口未定义 发生在组件在组件生命周期完全初始化前尝试访问属性时。这是GrapesJS中常见的竞争条件。 立即解决办法: 如果你控制代码,可以用空检查包裹调用: “JavaScript if (component && typeof component.method === 'function') { 你的准则 } ``` 根本原因分析: 组件在调用你的方法之前不会验证状态。当多个操作同时发生时,这会...
#35862021年7月2日作者 jcsofts4 个回答
init() { this.listenTo(this.model,'change:components', this.handleComponentsChange); }, 我开发一个组件,尝试监听子组件的变化,然后添加上面的代码以查看初始化,但添加/移除组件时函数没有触发。 我该如何在组件视图中监听组件的变化? 谢谢
dm-siegel
我也没能让这个方法正常工作。设置 listTo 时错误读取 components()。初始化时标签是空的(里面没有内容),所以这很合理。 算了......我是在模型的初始化中操作,而不是视图。 “打字稿” init() { const children = this.model.components(); this.listenTo(children, 'add remove', this.handleComponentsChange); }, ``` 在我把它放到正确的初...
anlumo
组件收集不会改变,这也是为什么没有触发事件的原因。 存储后端是一个骨干集合,详见[这里](https://backbonejs.org/#Collection)。你必须听它的事件,特别是“添加”和“删除”。
artf
正如Andreas已经提到的,你必须为收藏添加一个听众。 “''js init() { const children = this.model.components(); this.listenTo(children, 'add remove', this.handleComponentsChange); }, ```
#35792021年6月30日作者 mcottret4 个回答
版本: 0.17.4 你能重现演示中的bug吗?[x] 是的[ ] 不 繁殖步骤:前往[演示](https://grapesjs.com/demo.html)在画布内放置一个“文本”方块点击刚刚丢弃的“文本”组件打开的RTE丢失了位置(参见[附图](https://user-images.githubusercontent.com/9916749/123977724-89465180-d9bf-11eb-9e99-d1b1f9cb897c.png)) 预期的行为是什么? 打开的RTE应正确定位 目前的行为是什么? RTE位置不对,它隐藏了“文本”部分的内容,可能妨碍编辑(尤其是使用像CKEditor这样较大的自定义RTE时)。 这...
artf
是的,我想你说得对。实际上,在没有选择组件的情况下激活RTE其实没什么意义(可能对所有其他“可激活”的方块来说都合理)。
gustavohleal
嗨。我和@ronaldohoch找到了一个解决这个问题的办法。 当 RTE 启用时,我们会触发滚动事件。 这是代码: “JavaScript 触发Canvas上的滚动事件,使得葡萄 正确修复CKEditor位置 editor.on(“rte:enable”, () => { editor.trigger('canvasScroll'); }); ```
ronaldohoch
你好,刚刚更新了提交 bb4a661 的文件,我觉得非常接近,我用的是 grapesjs-ckeditor 代码和 RTE 的第一次打开,its 放置正确:  但第二次打开时,又放错地方了...... :/ ' 来设置撤销按钮的禁用状态。 'editor.on('change:changesCount', editor => setHasUndo(editor?.属性?撤销Manager?hasUndo()));' 除了以下这种情况,它对我来说还算是有效的:我在空白画布上创建新模板我拖放一个方块我撤销 问题是,虽然撤销现在应该被禁用,但它没有,因为“编辑器?”属性?撤销Manager?hasUndo()' 返回为真,和 'editor?' 一样。撤销Manag...
artf
所以队列中增加了一个额外的动作,而实际上不应该有,那就是我在画布上拖动一个方块时。 不太行,你能做一个可复现的演示吗?我不能复现?
no-response[bot]
由于我们请求原作者提供更多信息未获回应,本期已自动关闭。仅凭当前期刊中的信息,我们没有足够的信息采取行动。如果您有答案或找到我们需要的答案,请随时联系我们,以便我们进一步调查。
ClaudeCode
谢谢你举报,@alimajed93。 关于UndoManager hasUndo()方法在不应该返回时返回为真的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console....
#35742021年6月28日作者 alpha2k-io3 个回答
以下是[docs](https://grapesjs.com/docs/modules/Traits.html#add-traits-to-components)的示例。 有没有进一步的配置可以让元素的新特质显示? 使用输入的示例无法运行,我的ID被接收了,但额外的属性没有。 “''js 试着添加特质 编辑。DomComponents.addType('ol', { isComponent: el => el.tagName == 'OL', 型号:{ 默认值:{ 特质:[ { 类型:“select”,// 性状类型 标签:“类型”,// 你将在设置中看到的标签 name: 'type', // 用于组件的属性/属性名称 选项:[...
artf
我能正确看到你的例子,所有特征都正常工作。你能制作一个可重复的演示吗?
no-response[bot]
由于我们请求原作者提供更多信息未获回应,本期已自动关闭。仅凭当前期刊中的信息,我们没有足够的信息采取行动。如果您有答案或找到我们需要的答案,请随时联系我们,以便我们进一步调查。
ClaudeCode
谢谢你举报,@alpha2k-io。 关于添加特质不会被特质管理器识别的好问题。推荐的组件方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed'));...
#35732021年6月27日作者 jasminder2 个回答
版本: 0.17.17 你能重现演示中的bug吗?[ ] 是的[x] 不 预期的行为是什么? 它不应该显示重复的控制。 目前的行为是什么?  详细描述那个漏洞 不知为何,我用原版设置的GJ时会出现重复控制。 你能附上截图、截屏或实时演示吗?**[x] 是(附上)[ ] 不
artf
把这个添加到你的初始化配置文件中,以移除默认属性'styleManager: { clearProperties: 1 },'
ClaudeCode
谢谢你举报,@jasminder。 每个组件重复控制的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更快识别根本原因 在报告中包含...
#35652021年6月24日作者 Ubanna2 个回答
你好,请问在 React 应用中实现多页面管理器的最佳方式是什么? 我成功实现过,没有页面管理器,比如这样: 对于页面管理器的实现,我尝试了以下方法: 在这里,页面管理器的定义不明确。 非常感谢任何帮助。 谢谢
ClaudeCode
谢谢你举报,@Ubanna。 关于Undefined for multiple page manager, in react,这个问题很棒。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change'...