kityMinder 针对标签撤销重做时,会出现有undefined的标签出现

本文章系列将会记录在做kityminder二次开发过程中,遇到的问题以及解决方法

最近自己在验证脑图编辑器的时候,发现当一个节点中设置多个标签以后,通过撤销进行操作后,界面就会出现一个空白的标签内容,同时在已存在的标签列表中就会出现一个undefined的标签文字。效果图如下:

在这里插入图片描述

问题分析

首先要理清楚这个问题的话,我们需要先理清楚,设置完多个标签以后,通过点击撤销按钮以后,代码逻辑里面发生了什么事情。

其实整理的逻辑是这样子的。

  1. 每次页面发生变化的时候,都会去生成一个差异的patch,放到历史的操作记录中。代码如下:

    makeUndoDiff() {
         
         
            var headSnap = editorCommand.exportJson();
            var diff = compare(headSnap, this.lastContent);
            if (diff.length) {
         
         
                this.undoList.push(diff);
                this.setUndo();
                while (this.undoList.length > this.MAX_HISTORY) {
         
         
                    this.undoList.shift();
                }
                this.lastContent = headSnap;
                return true;
            }
            return false;
        }
    
  2. 用户一旦点击撤销按钮后,就会从undoList中取出最新的一条diff数据,然后调用kityminder的 applyPatches 的方法去构建这个差异的内容

    undo() {
         
         
        this.patchLock = true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值