从JSON刷新模型

时间:2017-06-19 09:57:23

标签: ember.js ember-data

我有一个深度嵌套的模型,具有一对一和一对多的关系。最初,我使用标准的ember-data API从服务器检索了这个模型。

我现在需要做的是从AJAX调用检索到的普通JSON中更新模型(及其所有关系)。

我无法使用reload()方法,因为这会产生额外的HTTP请求 - 我已经拥有JSON有效负载,因此不需要额外的HTTP请求。

有没有办法从JSON重新加载模型?

1 个答案:

答案 0 :(得分:1)

您可以使用pushPayload/push添加新记录并更新商店中的现有记录。

要恢复所有旧更改,您可以通过peekAll从store获取所有记录,并为hasDirtyAttributes迭代它,如果它是true,则从存储中卸载它。之后,您可以使用pushPayload将incomind记录更新到商店。

let allRecords = this.get('store').peekAll('modelname')
let dirtiedRecords = allRecords.filterBy('hasDirtyAttributes',true);
dirtiedRecords.forEach((item) =>{
 item.unloadRecord();
});
//after that you can use pushPayload the result you got it from Ajax call.

参见:
https://emberjs.com/api/data/classes/DS.Model.html#property_hasDirtyAttributes https://emberjs.com/api/classes/Ember.Enumerable.html#method_filterBy https://emberjs.com/api/data/classes/DS.Store.html#method_pushPayload