SpreadJS V14 Update1 新特性 - Undo/Redo栈API支持
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。
页:
[1]