Derrick.Jiao 发表于 2021-6-1 16:20:04

利用undo栈实现操作回退

在14.1这个版本我们新增了Undo/Redo栈API支持,具体可以参考下面帖子的介绍
https://gcdn.grapecity.com.cn/showtopic-92149-1-1.html

以及学习指南的行为管理
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/actions/undo-manager/purejs

我们主要来聊聊Undo栈的使用,以及利用这个api实现操作的“一键回退”按指定“步长”回退操作。

我们来看下这个demo,这个demo是基于上述学习指南改的。在初始化的的时候我们通过execute执行了5个命令,使其进入了undo栈里面。点击一键撤回,一步回退到5个操作之前。这些命令,也将由undo栈进入redo栈。按步长回退,则将按照指定的步长undo到某一步。整个demo回退最关键的就是undo方法。


“一键回退”利用undo栈的长度,做了个循环,循环操作指定次数的undo接口,而按指定步长也是同理执行指定次数的undo方法。
关键代码如下
let undoManager = spread.undoManager();
var arr = undoManager.getUndoStack();
    for (var i = 0; i < arr.length; i++) {
      undoManager.undo();
      updateInfo(spread);
    }下载附件即可查看完整代码


页: [1]
查看完整版本: 利用undo栈实现操作回退