【发布时间】:2016-01-30 11:57:24
【问题描述】:
我正在将 Ember 1.13.0 应用程序升级到 Ember 2.3.0,我遇到了一个小问题,即我无法在不导致 Ember 发出 HTTP 请求的情况下从数据存储中卸载记录。我不想删除服务器中的记录。我只是想从 Ember 数据存储中删除它。
我在 Ember 1.13.0 中使用了以下 Ember DS.Store API:http://emberjs.com/api/data/classes/DS.Store.html#method_unloadRecord,它运行良好。示例:
this.store.find('post', 1).then(function(post) {
this.store.unloadRecord(post);
});
升级到 2.3.0 后,当我在 Chrome 中监控网络选项卡时,Ember 正在向 find 记录发出 GET 请求,然后将其卸载。因为它失败了find(我们的服务器没有一个API来匹配这个调用),它不会卸载记录并且更改不会出现在UI中。
我尝试通过以下方式解决此问题:
this.store.peekRecord('posts', 1).then(function(post) {
this.store.unloadRecord(post);
});
但这似乎不起作用。在不进行 HTTP 调用的情况下从 Ember Data 中卸载记录的正确方法是什么?谢谢。
【问题讨论】:
-
peekRecord不返回承诺。只需发布或为空。 -
@Keo 那我怎么卸载这条记录呢?
-
试试
this.get('store').unloadRecord(this.get('store').peekRecord('posts', 1)); -
为什么要在 cmets 中回答? :P
-
我不确定这是否有帮助,以前从未使用过
unloadRecord。如果可行,我将创建答案并解释find()提出请求的原因。
标签: ember.js ember-data