撤销/重做功能
dhtmlxGantt Chart 允许您对所做的更改进行撤销/重做。要启用此功能,需要通过 gantt.plugins 方法启用 undo 插件。
gantt.plugins({
undo: true
});
默认情况下,撤销和重做功能均已启用。要控制撤销/重做功能,请使用 undo / redo 配置选项。
您可以通过关闭其中一个选项来分别使用 Undo 和 Redo:
// 仅启用 Redo 功能
gantt.config.undo = false;
gantt.config.redo = true;
Undo/Redo API
要还原 Gantt 图中的更改,请使用 undo 方法:
gantt.undo();
若要重做之前已撤销的更改,请使用 redo 方法:
gantt.redo();
从 v6.3 开始,undo()/redo() 方法也可通过 gantt.ext.undo 对象使用。请参阅 Undo Extension 文章。
获取存储的 Undo/Redo 操作栈
Gantt 图中的所有用户操作都实现为包含命令对象集合的数组。Gantt 会存储最近执行的命令栈。 undo 扩展可以从中进行反向操作并在 Gantt 中执行它们。
当你需要撤销或重做一个命令时,扩展会获取最近的命令对象并执行相应的方法。
要获取存储的 undo 操作栈,请使用 getUndoStack 方法:
var stack = gantt.getUndoStack();
要返回存储的 redo 操作栈,请使用 getRedoStack 方法:
var stack = gantt.getRedoStack();
返回的栈是用户操作的数组。每个用户操作包含一组命令:
- UndoRedoAction - (object) - 存储 Undo 或 Redo 操作命令的对象
- commands - (UndoRedoCommand[]) - 存储 Undo 或 Redo 操作的变更(命令)的数组
一个命令是具有以下属性的对象:
- UndoRedoCommand - (object) - 存储 Task 或 Link 对象的初始状态和更新状态的对象:
- type - (string) - 命令的类型:“add/remove/update”
- entity - (string) - 被更改对象的类型:"task" 或 "link"
- value - (Task | Link) - 已更改的 task/link 对象
- oldValue - (Task | Link) - 变更前的 task/link 对象
请看下面的示例:

The getUndoStack() 方法返回一个包含 2 个 undo 用户操作的栈。第一项包含 3 条命令,第二项包含 1 条命令。
从 v6.3 开始,getUndoStack()/getRedoStack() 方法也可通过 gantt.ext.undo 对象使用。请参阅 Undo Extension 文章。
清除存储的 Undo/Redo 命令栈
可以通过相关的 Gantt API 清除 Undo/Redo 命令的栈。
要清除存储的 undo 命令栈,请使用 clearUndoStack 方法:
gantt.clearUndoStack();
要清除存储的 redo 命令栈,请使用 clearRedoStack 方法:
gantt.clearRedoStack();
从 v6.3 开始,clearUndoStack()/clearRedoStack() 方法也可通过 gantt.ext.undo 对象使用。请参阅 Undo Extension 文章。