问题 #2908💬 已回答提出于 2020年7月21日作者 neon123450 个反应

专长:将getDirtyCount与撤销/重做结合起来

快速解答作者 mcottret

你好@neon12345! 据我所知,'changesCount' 也会和'stepsBeforeSave'一起使用,在启用'自动保存'时触发存储。 (参见:https://grapesjs.com/docs/modules/Storage.html#store-and-load-templateshttps://github.com/artf/grapesjs/blob/dev/src/editor/model/Editor.js#L170 ) 干杯!

阅读下方完整回答 ↓

问题

目前,变化计数只会增加,无论撤销和重做。我想知道是否有应用中实际值被使用,还是这只是一个布尔值指示器。 如果只是作为布尔值使用,也可以在撤销状态中添加一个标志并标记保存的位置。这样,只有当撤销栈没有指向撤销和重做时保存的位置时,才能发出更改信号。 类似这样的方法似乎很有效: var um = 编辑。UndoManager; var 变点 = null; var hasChange = false; 函数 findChange() { var s = um.getStack(); var idx = s.pointer; var old = hasChange; 如果(idx != -1) { hasChange = 变点 !== s.models[idx]; } 否则 { hasChange = 变点 !== null; } if(old != hasChange) { console.log(“已更改”,hasChange); } } 函数 saveChange() { var s = um.getStack(); var idx = s.pointer; 如果(idx != -1) { 变点 = S.models[idx]; } 否则 { 变点 = 零; } } editor.on('undo', findChange); editor.on('redo', findChan...

回答(3)

neon123452020年7月27日

好的。但这意味着撤销和重做总是会触发自动保存,这并不是最优选择。

artf2020年8月25日

getDirtyCount 返回变更次数,因此不用作布尔值。 如果你有更好的撤销/重做更改方案,欢迎PR

相关问答

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

问题 #2778

无法读取 r.getBody 的 null 属性 'querySelector'

嗨 我尝试在 visualsource 页面上使用 grapesjs。 以下是初始值函数—— 'initEditor: function(){ var self = this; this.editor = grapesjs.init({ 容器:“#gjs”, fromEleme...

2 个回答更新于 2020年6月29日

问题 #2017

问题:在特质面板中按退格键或删除键会移除画布中的元素

我在Polymer 3.x Element中使用grapesJS,一切运行得非常顺利,项目很棒。但是,我遇到了一个问题: 当我在画布中选择元素,进入特质面板,将光标置于特质字段,输入一些文本(或不输入),然后按删除键或退格键时,它会删除选中的元素。 这种情况在 Chrome 的...

2 个回答更新于 2019年5月29日

问题 #1804

在同一个HTML标签上应用两个不同的特征,但只应用一个

你好,@artf, 如果我们需要在同一个HTML标签上初始化两个特征,那这可行吗? 实际上,我在同一个标签上定义了两种不同的特征(“在链接/标签上”)。 让我简单介绍一下你。 假设我有一组链接包含类类,类似于“非拖放”。 所以,它的HTML代码就像 所以对于上述类别的“非拖放”...

3 个回答更新于 2020年3月10日

问题 #1493

Render() 第一次通话时能正常工作,但后续通话则不行

你好, 我创建了一个自定义组件,用“背景图像”显示图像,<div>而不是用“<img>''元素。大部分时间还能用,只是每次我更改它的“src”特性时,都必须重新加载编辑器来预览渲染后的元素。这是其观点: “''js 查看:originalMap.view.extend({ in...

3 个回答更新于 2019年10月21日

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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