【问题标题】:Stop undo() from clearing everything in the editor Quill / QuillJS?阻止 undo() 清除编辑器 Quill / QuillJS 中的所有内容?
【发布时间】:2021-01-08 23:12:47
【问题描述】:

我创建了一种将 Quill 文本保存到数据库的方法。每次用户单击保存的文档时,它都会从数据库中提取保存的 Quill 文本,并让文本出现在 Quill 文本编辑器中。此时,如果我触发撤消功能,它将删除从数据库中提取的所有文本,因此页面为空白。

我认为正在发生的事情是 Quill 编辑器将从数据库中提取的文本视为粘贴到文本编辑器中,因此当您触发撤消功能时,它会清除“从数据库中粘贴/拉取”。

有没有办法阻止这种情况发生?当您从数据库中提取初始文本后立即触发撤消功能时,有没有办法让 quill 不清除所有内容?

【问题讨论】:

    标签: quill


    【解决方案1】:

    当您将数据库中的内容“加载”到编辑器中时,无论您喜欢与否,您都在更改 Quill Delta 内部的内容(数据)。对 Quill 的内容所做的任何类型的更改都会被其自身视为......以及......所做的更改,因此,可以撤消。

    [...] 每次用户点击已保存的文档时,它都会拉取已保存的文档 来自数据库的 Quill 文本,并且文本出现在 Quill 中 文本编辑器。此时,如果我触发撤消功能,它会 删除从数据库中提取的所有文本,因此页面为空白。 [...] 有没有办法阻止这种情况发生?有没有办法 触发撤消功能时使羽毛笔不清除所有内容 在从数据库中提取初始文本之后?

    由于您刚刚向 Quill 添加了内容,并且没有兴趣担心您之前所做的任何更改,因此建议您查看 this。基本上,这个想法是:

    1. 获取内容。
    2. 将其添加到编辑器中。
    3. 添加完成后,调用如下代码:
    quill.history.clear();
    

    之后,当尝试执行撤消操作时,什么都不会发生,因为没有存储任何历史记录。

    【讨论】:

    • 那么,当你使用 clear() 函数时,它不会删除文本编辑器中当前的内容吗?只会清除历史记录?
    • 根据文档,是的。 quill 实例的 history 属性负责处理 quill 中所采取的操作的历史记录。如果您删除/清除此历史记录,按 CTRL + Z 将不会发生任何事情,因为没有更多历史记录被存储。
    • @PageCOW 很高兴为您提供帮助。 :)
    【解决方案2】:

    创建 Quill 对象时,在模块中设置历史配置。例如:

    var quill = new Quill('#editor', {
      modules: {
        history: {
          delay: 2000,
          maxStack: 500,
          userOnly: true
        }
      },
      theme: 'snow'
    });
    

    “userOnly”配置将以编程方式过滤掉值更改。

    https://quilljs.com/docs/modules/history/#useronly

    【讨论】:

    • 这对我有用,而且看起来比这里接受的答案更好
    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多