You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ember 2.15中rollbackAttributes()未修改isDeleted,如何实现记录撤销删除?

解决Ember 2.15中撤销未持久化删除的问题

我之前也踩过这个坑!Ember Data的rollbackAttributes()确实不会处理isDeleted这个状态——因为它本质是记录的状态标记,不是你在模型里定义的普通属性,这个方法只负责回滚模型上的属性变更,管不到记录的状态类标记。

针对你要撤销未持久化删除的需求,有两个靠谱的解决方案:

1. 手动重置isDeleted状态

如果只是想撤销删除标记,同时保留其他未保存的属性修改,直接把isDeleted设回false就行,简单直接:

// 标记记录为删除
myRecord.deleteRecord();

// 撤销删除
myRecord.set('isDeleted', false);

这个方法只适用于还没执行save()的删除操作,要是已经把删除请求发去服务器了,那就没用了哈。

2. 用rollback()彻底回滚所有变更

如果你想一次性撤销所有未保存的操作(包括删除标记和其他属性修改),可以用record.rollback()——这个方法会把记录完全恢复到最近一次持久化的状态,包括重置isDeleted:

// 标记删除+修改属性
myRecord.deleteRecord();
myRecord.set('title', '临时修改的标题');

// 一键回滚所有变更
myRecord.rollback();

小提醒

  • 要是只需要取消删除,选第一种方法;要全盘回滚所有未保存变更,选第二种;
  • 这俩方法都只对未保存的删除有效,要是已经执行save()提交了删除请求,只能重新从服务器拉取数据或者重建记录了。

内容的提问来源于stack exchange,提问作者mlehmeher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:19:36