我们正在考虑在AngularJS中构建类似Excel的应用程序,我们希望撤消/重做支持细胞编辑。
有关实施此策略的最佳策略的建议吗?
我不只是考虑撤消刚刚在文本框中输入的文本。我的意思是在几个单元格中输入数据,然后撤消每个条目。
我已经尝试过在每次修改之前将当前模型推送到堆栈上。这使得可以通过将模型恢复到先前状态来撤消。但是,如何将其与REST CRUD交互相结合?
解析CRUD的“自然”方法是对每个修改立即对后端进行REST调用(更新数据库)。但是,撤消只会修改Angular中的模型,而不是数据库。并且没有简单的方法在REST上发布两个模型之间的增量。
答案 0 :(得分:1)
我认为这是angular-js不是特别的功能,而是通过捕获状态实现的功能。
您的操作(例如编辑,添加,移动单元格等)都会改变您的应用程序的状态,这些状态的增量可以被推送到可以回滚的结构上。
如果你撤消,说2个动作,然后开始一个新的动作,那么大多数2个状态将被删除,新状态会被推开。
Photoshop等应用程序存储历史记录与此类似(并且由于类似原因不允许无限制撤消)。
同样,我认为这是不应该绑定到角度框架的功能,但你显然可以将其作为角度服务提供。