Ember:新记录的 unloadRecord 和 destroy 之间的区别

Ale*_*xMA 4 ember.js ember-data

在尚未持久化到后端的路由模型的上下文中(它的 id 仍然是null,我们还没有调用save),如果我们想丢弃该记录,使用unloadRecord或更正确吗destroy

上下文:当表单转换离开但既没有保存也没有取消时使用。unloadRecord我是 ember 的新手,我对模型私有但商店不私有这一事实感到有点困惑。这可能是显而易见的,但我也不肯定何时将对象称为模型与记录是正确的(我假设它们有时可以互换使用,但如果它们是现有实例,则将它们称为记录在技术上是正确的)。

maf*_*ews 5

如果您创建但不保存记录,它将处于该root.loaded.created.uncommitted状态(Ember 2.4)。调用destroyRecord将调度 asave但也会立即将状态更改为root.deleted.saved,因此save请求将永远不会被执行。

您可以在浏览器中通过检查通过调用destroyRecord新创建的记录创建的网络请求来验证这一点。

save与调用时destroyRecord相反,围绕调度 a 执行了一些额外的工作unloadRecord,因此这里的权衡是在调度从未执行的保存与删除记录之前确定模型状态的额外复杂性之间进行权衡。

unloadRecord- 从存储中卸载记录

deleteRecord- 删除记录但不保存(必须调用save

destroyRecord- 通话deleteRecordsave

rollbackAttributes- 回滚属性,或者如果是 model isNew,则将其从存储中删除