SpreadJS V14 Update1 重点新特性:
在GC.Spread.Commands.UndoManager上公开API,以获取撤消/重做命令栈的详细信息。
在V14.0及更早的版本中,用户可以根据spread.undoManager().undo() 进行撤消操作,并根据spread.undoManager().redo() 进行重做操作。但是用户无法获取撤消和重做堆栈的详细信息。在一些需要记录用户操作记录的场景下,常常需要依赖命令监听接口,甚至对应的事件回调等方式来实现。
而在SpreadJS V14 Update1 中,我们为GC.Spread.Commands.UndoManager添加了新的接口API,支持获取和操作撤消/重做堆栈的方法。并且可以根据maxCount方法限制堆栈最大长度。
具体API描述如下:
class GC.Spread.Commands.UndoManager
- ///* function getRedoStack()
- /**
- * Get the redo stack. 获取Redo命令栈详情
- * @returns {Command[]} ICommand is an object. It include sheetName and cmd. the type of sheetName and cmd both is string.
- */
复制代码- ///* function getUndoStack()
- /**
- * Get the undo stack. 获取Undo命令栈详情
- * @returns {Command[]} ICommand is an object. It include sheetName and cmd. the type of sheetName and cmd both is string.
- */
复制代码- ///* function maxSize(value?: number):any
- /**
- * Gets or sets the the undo/redo stack max size. 获取或设置Undo/Redo命令栈最大长度。
- * @param {number} value this value should be greater or equal to 0.
- * @returns {number | UndoManager} If no value is set. return the max size of undo/redo stack. otherwise return UndoManager.
- */
复制代码 getUndoStack / getRedoStack 方法返回的数组中,会包含若干个以下结构的json对象用以描述命令信息:
- interface Command {
- cmd: string;
- sheetName: string;
- }
复制代码
示例代码:
如上图所示:
1. 通过spread.undoManager()可以获取到UndoManager实例;
2. 在执行过操作命令后,调用undoManager.getUndoStack() 可以拿到Undo栈命令数组;
3. 在执行过Undo后,调用undoManager.getRedoStack()可以拿到Redo栈命令数组;
4. Json中记录了命令的详情。
执行策略:
浅表复制后,getRedoStack / getUndoStack方法将返回一个新数组
在maxSize方法中,如果用户输入了非法值,则运行时将执行以下操作:
如果输入负数,则运行时不执行任何操作并返回undoManager。
|
|