Ember.js 余烬:新记录的记录和销毁的区别
在尚未持久化到后端的路由模型的上下文中(其id仍然是Ember.js 余烬:新记录的记录和销毁的区别,ember.js,ember-data,Ember.js,Ember Data,在尚未持久化到后端的路由模型的上下文中(其id仍然是null,我们还没有调用save),如果我们想丢弃记录,使用unloadRecord或destroy是否更正确 上下文:当表单从转换而来,但既不保存也不取消时使用。我是ember的新手,我有点困惑于这样一个事实,unloadRecord是模特专用的,但不是商店专用的。这可能很明显,但当将对象称为模型与记录时(我假设它们有时可以互换使用,但如果它们是现有实例,则称它们为记录在技术上是正确的),我也不肯定这是正确的选择 Model-destroyR
null
,我们还没有调用save
),如果我们想丢弃记录,使用unloadRecord
或destroy
是否更正确
上下文:当表单从转换而来,但既不保存也不取消时使用。我是ember的新手,我有点困惑于这样一个事实,
unloadRecord
是模特专用的,但不是商店专用的。这可能很明显,但当将对象称为模型与记录时(我假设它们有时可以互换使用,但如果它们是现有实例,则称它们为记录在技术上是正确的),我也不肯定这是正确的选择
Model-destroyRecord
->将调用适配器deleteRecord,这意味着它将向服务器发出特定记录的删除请求
Store-unloadRecord
->它只会从Store中卸载,不会向服务器发出任何请求。您只能卸载非脏记录
型号-
unloadRecord
->完全不需要。因为如果创建了记录,那么您将在存储中有条目,所以您可以始终通过存储的unloadRecord
方法删除非脏记录。如果您创建但不保存记录,它将处于根.loaded.created.uncommitted
状态(第2.4节)。调用destroyRecord
将安排保存
,但也会立即将状态更改为root.deleted.saved
,因此将永远不会执行保存
请求
您可以在浏览器中通过检查通过在新创建的记录上调用destronRecord
创建的网络请求来验证这一点
调用destroyRecord
时,与unloadRecord
相反,在调度保存
时还需要执行一些额外的工作,因此这里的权衡是在调度从不执行的保存和在删除记录之前确定模型状态的额外复杂性之间
卸载记录
-从存储中卸载记录
deleteRecord
-删除记录但不保存(必须调用save
)
销毁记录
-调用删除记录
和保存
rollbackAttributes
-回滚属性,或者,如果model是新的
,将其从存储中删除,因为存在这种情况方法。若模型尚未持久化,它将从存储中删除。此外,在用户单击“保存”之前不要创建模型,但是:
存储从存储中卸载持久化的记录(因此您不会在本地拥有它,但可能在后端拥有或不拥有它)。对新创建的记录调用
销毁记录
,会导致调用保存
,但是Ember会智能地处理此问题,并且不会实际执行远程请求以将更改持久化到服务器。在您看来,为什么rollbackAttributes
比destroyRecord
更正确?@maffewsdestroyRecord
的目的是从存储和后端删除持久化记录,虽然问题是关于新的记录,但尚未持续。这就是为什么使用它不那么正确。您无法保证它在将来的版本中能够正确地处理未持久化的记录。文档或代码注释中是否支持这一点?我在这两个文件中都搜索过,但没有找到任何说明destroyRecord
仅用于持久化记录的内容。根据destroyRecord
处理未保存记录的方式,我认为destroyRecord
和deleteRecord
都是合适的,如果不超过rollbackAttributes
@maffews的话,我没有足够的时间进行这场圣战。你可以随心所欲地编写代码。在我看来,使用deleteRecord/destroyRecord是不正确的。文档非常清楚rollbackAttributes,而destroyRecord恰好工作。如果您看看调用rollbackAttributes
如何导致新记录进入删除状态,您可以看到[编辑:抱歉,我在刷新和查看您的评论之前发布了此消息。这不是一场圣战,我只是想了解真相,以避免传播错误信息]