【发布时间】:2013-08-20 23:03:23
【问题描述】:
我们正在考虑在 AngularJS 中构建一个类似 Excel 的应用程序,我们希望在其中支持对单元格编辑的撤消/重做。
对实施此策略的最佳策略有何建议?
我不只是想撤消刚刚在文本框中输入的文本。我的意思是在多个单元格中输入数据,然后撤消每个条目。
我已经尝试在每次修改之前将当前模型推送到堆栈上。这使得可以通过将模型恢复到以前的状态来撤消。但是,如何将其与 REST CRUD 交互结合起来?
解决 CRUD 的“自然”方式是针对每次修改立即对后端进行 REST 调用(更新数据库)。但是撤消只会修改 Angular 中的模型,而不是数据库。并且没有简单的方法通过 REST 发布两个模型之间的增量。
【问题讨论】:
-
如果单元格只是输入字段,那么 CTRL+Z 和 CTRL+SHIFT+Z 将对这些字段进行撤消重做。
-
@jcubic 我已经澄清了我的问题。
-
我已经从问题中删除了对 ember 的任何引用,因此它应该完全符合主题。
-
嗨 Klas,请尝试阅读有关命令处理器模式的信息。一般来说,对于命令处理器,您(在 angularJS 的情况下为控制器)将创建一个命令(在 excel 上写入)并发送到一个命令处理器,该命令处理器将存储命令并执行它。在撤消的情况下,您可以要求命令处理器撤消操作。
-
我在这里介绍 AngularJS 纪念品工厂:stackoverflow.com/a/45435927/1122851
标签: javascript angularjs undo undo-redo