#31852020年12月11日作者 Stiggi2 个回答
你好, 我在TraitManager中添加了一个新的类型“array”。所以我可以添加几个子特征。有一点我必须检查模型的特征。我用的是这样的构造: 有没有更简单的方法可以直接从组件获取组件的模型? 此致敬礼, 迈克尔
Stiggi
比我想象的简单:) 'editor.getSelected().defaults.traits'
ClaudeCode
谢谢你举报,@Stiggi。 关于如何获得组件模型特性的好问题。推荐的组件方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周期 e...
#31812020年12月11日作者 congweibai2 个回答
版本:0.16.30 你能重现演示中的bug吗? [1] 是的 预期的行为是什么?* SelectorManager.getState() 应根据 SelectorManager.getState() 返回字符串 https://grapesjs.com/docs/api/selector_manager.html#getstate 详细描述那个漏洞  目前的行为是什么? Se...
congweibai
你能帮我看看 https://github.com/artf/grapesjs/pull/3182 这解决了这个问题吗?谢谢
ClaudeCode
谢谢你举报,@congweibai。 SelectorManager 不返回字符串而是返回对象的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——...
#31792020年12月10日作者 TheEightArms4 个回答
你好, 过去几周我一直在尝试将Grapes整合到我的VueJs项目中,但我收到了一个关于资产管理部门的问题。 这就是我简单的assetManager配置,不知为何它会加载我两周前上传的另一张图片,无论我怎么尝试都无法更新。 如果我用assetManager.add('URL'),它会说getAllVisible是另一个,但什么都没有显示。如果我在添加 assetManager.render() 后操作,我收到的 HTML 元素只显示之前的旧图片。 有什么建议吗? 谢谢你 丹尼尔
gixid192
@TheEightArms 你可以在 [init 函数](https://grapesjs.com/docs/getting-started.html#start-from-the-canvas)中将 storeManager 设置为 false
TheEightArms
我发现它会从保存的代码和数据库加载资产,有没有可能告诉 StoreManager 不要加载资源? 谢谢
artf
你也可以避免从端点(加载组件和样式的地方)返回资产
#31762020年12月9日作者 mcottret4 个回答
版本: 0.16.30 你能重现演示中的bug吗? [x] 是的 [ ] 不 繁殖步骤:打开控制台执行 'editor.setComponents('', {avoidStore: true});'执行 'editor.setStyle('', {avoidStore: true});'“存储......”日志依然存在(见附图) 预期的行为是什么? “选项”参数应被考虑。将“avoidStore”选项传给“true”,再传给“setStyle”和“setComponents”,应该能防止更新事件触发。 目前的行为是什么? “选项”参数未被考虑。传递“避免商店”选项无效,更新事件仍然会触发。 提出的解决方案: 很抱歉我之前在[PR]...
artf
谢谢@mcottret修复已经准备好,下次发布时会有修复
artf
不幸的是,由于初始命名不当,“avoidStore” 是用来跳过 UndoManager 而不是存储😁的 好消息是,为了修复 #3189,我不得不引入新的“noCount”选项,这样可以跳过编辑器更改计数器,也不会触发存储。 这个修复也促使我正确更新了 handleChanges 中的签名,使用 CssComposer,但我还需要修正其他几种方法才能让整个系统正常工作(包括你提到的那些)。 所以,在下一个版本中,这个功能应该会像你预期的那样运行,配合新的“noCount”...
mcottret
你好,@artf! 很抱歉重新提起这个问题,但“setStyle”问题似乎依然存在。 重新操作上述步骤,“存储......”当调用“setStyle”并使用“noCount”选项时,日志仍然显示。 我看到[已修复的“handleChanges”处理程序仍然使用“避免Store”选项](https://github.com/artf/grapesjs/blob/dev/src/css_composer/index.js#L130),但“避免Store”选项似乎也没用。 我没深...
#31752020年12月9日作者 mcottret2 个回答
版本: 0.16.30 你能重现演示中的bug吗? [x] 是的 [ ] 不 繁殖步骤:在演示画布中选择文本组件选择框和RTE出现打开控制台执行 'editor.setComponents('');'组件被移除,但选择框和RTE仍然存在(见附图) 预期的行为是什么? 当程序性移除带有活跃RTE的选中组件时,应清除该选中和激活RTE的组件。 目前的行为是什么? 组件选择和RTE在不存在组件上保持活跃。点击后元件选择会消失,但RTE不会,且会报错。 提议解决方案:当['ComponentTextView'的“onDisable”处理程序被移除时,执行该处理程序](https://github.com/artf/grapesjs/blo...
artf
感谢@mcottret报告。我自己处理过这个问题,应该会在下一个版本中修复,但一如既往,感谢你愿意帮忙:)
ClaudeCode
谢谢你举报,@mcottret。 选择和激活RTE在程序化移除组件时未清除的问题似乎是竞争条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更快识别...
#31742020年12月9日作者 ThetripGr2 个回答
你好,我正在尝试通过创建以下插件来创建一个所有组件共享的新共同特性 在另一个插件文件中,我也按照文档的做法创建了一个新的组件类型,叫做“extendedText”,它以“文本”类型为基础。而文本类型则有如下所示的“handleBgColorChange()”  从文本分支的新类型则不支持  寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something chan...
#31722020年12月8日作者 theSC0RP2 个回答
嗨,@artf。我有一些关于组件生命周期钩子的问题。在我的应用程序中,我想跟踪组件所有子节点及其子节点的更新情况,依此类推。我该怎么做?直接子节点的更新通过“model.updated()”钩子追踪,但我需要跟踪一个组件(我们称之为super child)的更新,该组件是另一个组件的嵌套子节点(我们称之为super parent)。在超级父节点和超级子节点之间,可以有任意数量的组成部分。我该如何跟踪这些更新? 比如,如果我在super child中添加了一个组件,我想在super parent里做一些事情。 而且,我无法在全球范围内追踪这些变化。我想在组件层面做。 <hr/> 为了给我的问题提供更多背景,我现在想做的是:<br/>...
artf
我会在父节点上创建一个专门的监听器 “''js 父分量 ... init() { this.on('cell-changed', this.doStuff) }
ClaudeCode
谢谢你举报,@theSC0RP。 关于如何追踪组件更新在树上?的好问题。推荐的组件方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命...
#31712020年12月7日作者 skbhagat404 个回答
预期行为——当我更新'href'特性值时,图片应该被包裹在'a'中,'href'值设置为。即 '<A href=“google.com”><img src=“/></a>' 当前行为 = 无变化反映 这里有添加特质的代码 上述功能需双击触发, 请帮我,如何在不使用特征管理器的情况下,从代码动态地将 href 添加到图片中。 ```
skbhagat40
即使我做了 'selectedElement.getTrait('href').set({value: 'fb.com', target: '_blank'})
skbhagat40
我觉得组件视图没有被更新,如果我重复操作,它会渲染带有之前值的“标签”。
skbhagat40
如果我在属性中更新 href,它就能工作
#31702020年12月7日作者 ThetripGr3 个回答
你好,我想实现的是通过分配一个名为“对齐”的额外特征来扩展文本组件,并通过该特征决定我想做的对齐类型,之后不应用 css,但应为组件赋予相应的类名。有没有什么例子能让我自己找到类似的东西 :/ ?
ThetripGr
我又试了几次终于让它工作起来了,我会试着解释一下我是怎么让它工作的。当你定义性状时 “''js 默认值:{ 特质:[{类型:“选择”, 选项:[{ { 值:'myCustomClass',名称:'选项A' }, }], 标签:“traitLabel”, 名称:“traitName”, 变革提案:1 }] }, 抱歉格式有点,我还不会粘贴格式化代码:P
artf
抱歉格式有点乱,但我还不会粘贴格式化的代码:P https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown
ClaudeCode
谢谢你举报,@ThetripGr。 关于从特质中添加职业名称的问题非常好。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something ch...
#31692020年12月7日作者 mrobertshaw3 个回答
你好 我正在尝试实现一个编辑器,页面的某些部分可以编辑/删除等(比如混合页面,有些元素是动态的,有些则不是)。 我用data-gjs属性来阻止静态元素上的这种行为,效果很好,但我似乎无法禁用容器元素本身的drop? 也就是说,我用fromElement: true绑定了我的实例到页面的正体元素,而data-gjs-droppable设置为false,但我仍然可以将块拖到页面的任意位置? 我是不是漏掉了什么,还是这是设计本意? 非常感谢 马克
mrobertshaw
这非常有帮助。 感谢您如此迅速的回复,以及您那出色、巧妙且设计精良的产品,这对我们的产品帮助巨大。
artf
你好@mrobertshaw,主元素是作为编辑器容器,而不是包装器。 如果你需要编辑包装器的道具,必须使用这个选项: “''js Grapesjs.init({ ... domComponents: { 包装:{ 可掉落:false, ... } } }) ```
ClaudeCode
谢谢你举报,@mrobertshaw。 关于*的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周...