问题 #3496💬 已回答提出于 2021年5月28日作者 anlumo1 个反应

成就:标记组件为脏

快速解答作者 anlumo1

我通过完全关闭“on-andload”处理,自己滚动来解决这个问题。

阅读下方完整回答 ↓

问题

你想给GrapesJS添加什么? 组件应该能够标记自己为脏,触发“onbeforeunload”警告信息。 详细描述你的功能需求详细 我有一个(自定义)文本组件,用户可以输入任意文本。我把数据存储在服务器上,我想要自动保存。不过,我不希望服务器因为每一个字符都被联系到文本组件,因为那会是用户数量的巨大洪水。 我也不想更改“stepsBeforeSave”,因为像拖动组件这样的大改动应该立即保存。 目前,组件在用户离开文本组件时存储数据(设置模型上的“内容”键)。这方法有效,但当用户在文本组件仍处于焦点状态时重新加载页面,最新的更改不会应用到数据模型上。 这样可以,但我想弹出保存警告对话框(“onbeforeunload”消息)。然而,这不可能,因为 grapesjs 不知道即将发生的变更,所以它不会启用: https://github.com/artf/grapesjs/blob/88249c38577852dc3c42047356a70a12066ee6ca/src/editor/model/Editor.js#L183-L196 我不能简单地增加“changesCount”来触发对话,因为那样会触发存档(我不想这样)。 如果组件能声明自己是脏的(有未保存的更改),那就更好了。 最新版本有替代方案吗?[X] 是的(描述替代方案)[ ] 不 我可以在编辑器配置中将“noticeO...

回答(4)

anlumo2021年7月23日

我通过完全关闭“on-andload”处理,自己滚动来解决这个问题。

artf2021年5月31日

编辑器有“编辑”属性,只要启用或禁用RTE就会改变,所以我猜在你的情况下,这个功能应该可行 “''js editor.on('' change:editing', (em, editing) => { window.onbeforeunload = 编辑 ||editor.getDirtyCount() ?e => 1 :零; });

anlumo2021年5月31日

这个在 onbeforeunload 处理程序之后不会被我上面提到的那个片段覆盖吗?

ClaudeCode2026年5月17日

谢谢你举报,@anlumo。 关于FEAT:标记组件为脏的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”事件进行细致跟踪 构建一个插件,扩展编辑器并具备此功能 正式宣布: 如果此功能能惠及更多用户,考虑在 GrapesJS 仓库上正式开启功能请求,...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

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