本帖最后由 Lynn.Dou 于 2023-3-2 17:32 编辑
更新进展:
涉及到行列等结构性的变动时,两种思路:
1、完全记录所有的行为,即撤销是无上限的。这种方式下两种思路:
(1)undoTransaction (用tag标记新的行列位置,但是为什么修改row索引后,撤销的仍是原位置,这个目前还在调研中)
更新调研进展:
SpreadJS中单元格的选中状态与value的绘制并不在一层(双层画布),撤销行为引起的变动经调研目前无法通过代码完整控制,简单来说不建议用户使用这种”撤 销无上限思路“,建议使用思路2:遇到结构性变化时,清空undo/redo栈,此时不允许再撤销。
(2)不使用undoTransaction,用API(如clear)模拟撤销行为。需要对所有的行为做预判,比较复杂
2、当遇到结构性变化时,清空undo/redo栈,此时不允许再撤销。
即如果用户做了插入/删除行操作时,栈被清空,就不能再撤销了,撤销是有限的。这种方式实现比较简单,且也是目前很多协同客户被建议在用的方案。
|