我们正在考虑在 AngularJS 中构建一个类似 Excel 的应用程序,我们希望在其中为单元格编辑提供撤消/重做支持。
关于实现此目标的最佳策略有什么建议吗?
我不只是在考虑撤消刚刚在文本框中输入的文本。我的意思是在多个单元格中输入数据,然后撤消每个条目。
我曾尝试在每次修改前将当前模型压入堆栈。这使得可以通过将模型恢复到以前的状态来撤消操作。但是,如何将其与 REST CRUD 交互结合起来?
解决 CRUD 的“自然”方法是为每次修改立即对后端进行 REST 调用(更新数据库)。但是随后撤消只会修改 Angular 中的模型,而不是数据库。并且没有简单的方法可以通过 REST 发布两个模型之间的差异。
最佳答案
我认为这不是 angular-js 特有的功能,而是通过状态捕获实现的功能。
您的操作(例如编辑、添加、移动单元格等)都会改变您应用的状态,这些状态的增量可以被推送到一个可以回滚的结构上。
如果你撤消,比如说 2 个 Action ,然后开始一个新的 Action ,那么 2 个最多的状态将被移除,新的状态将被推进。
诸如 Photoshop 之类的应用程序存储与此类似的历史记录(并且出于类似的原因不允许无限制的撤消)。
尽管如此,我还是认为这是不应绑定(bind)到 Angular 框架的功能,但您显然可以将其作为 Angular 服务来提供。
关于javascript - CRUD AngularJS 应用程序的撤消/重做实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18308901/