Ember.js 正在回滚未保存的记录?取消记录的编辑应在编辑之前恢复到其状态,而不是空白状态。

Ember.js 正在回滚未保存的记录?取消记录的编辑应在编辑之前恢复到其状态,而不是空白状态。,ember.js,ember-data,Ember.js,Ember Data,在我的应用程序中,我让用户在客户端创建一个记录,并在保存之前对其进行处理。记录是一个相当复杂的模型,有很多关系。要编辑记录,将打开一个模式对话框并显示一个表单 示例场景: 您已经在客户端创建了一个新记录。它处于空白状态。 然后继续编辑记录。在模式对话框中对窗体进行更改,然后按OK。记录现在处于A状态 然后,您继续再次编辑记录,将记录转换为状态B。但这次您将表单弄乱并决定取消 单击“取消”时,记录应恢复为状态A 问题是这是一条未保存的记录,因此不能使用record.rollback() 我所能想到

在我的应用程序中,我让用户在客户端创建一个记录,并在保存之前对其进行处理。记录是一个相当复杂的模型,有很多关系。要编辑记录,将打开一个模式对话框并显示一个表单

示例场景:

  • 您已经在客户端创建了一个新记录。它处于空白状态。
  • 然后继续编辑记录。在模式对话框中对窗体进行更改,然后按OK。记录现在处于A状态
  • 然后,您继续再次编辑记录,将记录转换为状态B。但这次您将表单弄乱并决定取消
  • 单击“取消”时,记录应恢复为状态A

    问题是这是一条未保存的记录,因此不能使用
    record.rollback()

    我所能想到的就是复制一份记录并将其输入表单。但是表单的大多数字段都绑定到相关记录,因此,您必须递归地克隆记录的相关记录。这是一个巨大的黑客,我不想去


    有更简单的建议吗?

    我使用的方法是基于控制器中的缓冲代理模式

    这样,控制器可以在取消时丢弃缓冲区,或者在用户确定更改时将缓冲区应用于模型并编排模型保存

    以下是一个ember软件包,可用于入门:

    也许您只是想将数据与服务器同步,那么是否真的要保存状态A?那么,你就没有问题了。。。我知道这不是你要问的,但也许你是想让它变得复杂而没有理由:)我们不希望后端保存以后不再需要的记录。考虑这是一个无止境的用例,谢谢你的回答,同名!我仍然不知道如何在唱片中使用它。我想我可以将它混合到我的模型中,但这并不能解决大多数数据存储在相关记录中而不是相关记录中的问题。你能给我举个例子吗?把你的控制器混在一起就行了。缓冲区代理将缓存任何模型属性更改。我现在不在电脑前,但当我回到控制器时,我会添加一些示例代码?欧欧欧