CRUD AngularJS应用程序的Undo/Redo实现



我们正在考虑在AngularJS中构建一个类似Excel的应用程序,我们希望在其中撤消/重做对单元格编辑的支持。

关于实现这一目标的最佳策略,有什么建议吗?

我不只是想撤消刚刚在文本框中输入的文本。我的意思是在几个单元格中输入数据,然后撤消每个条目。

在每次修改之前,我都尝试过将当前模型推送到堆栈上。这使得可以通过将模型恢复到以前的状态来撤消。但是,如何将其与RESTCRUD交互结合起来呢?

解决CRUD的"自然"方法是为每次修改立即对后端进行REST调用(更新数据库)。但撤消操作只会修改Angular中的模型,而不会修改数据库。并且没有简单的方法可以通过REST发布两个模型之间的delta。

我认为这不是angular js特有的功能,而是通过捕获状态来实现的。

你的操作(如编辑、添加、移动单元格等)都会改变你的应用程序的状态,这些状态的增量可以被推到一个可以回滚的结构上。

如果你撤消,比如说两个操作,然后开始一个新的操作,那么最多的两个状态将被删除,新的状态将被推。

Photoshop等应用程序存储类似的历史记录(出于类似的原因,不允许无限撤消)。

不过,我再次认为,这是不应该绑定到角度框架的功能,但很明显,您可以将其作为角度服务来提供。

最新更新