利用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]