当它们不在服务器中时,如何删除商店中的记录

时间:2018-03-28 14:54:44

标签: ember.js ember-data

我的应用程序可能会丢失与服务器的连接数天,并且当它最终重新连接存储器中存在的某些记录时,服务器中不再存在。 我需要删除这些记录,而不会在ui中创建闪烁。

我尝试修复它,但无法到达任何地方。

store.findall似乎没有选择删除服务器未返回的记录。

我找不到连接store.unloadAll和store.findAll的方法,而不会让空白状态在屏幕上生效并导致闪烁

我也无法找到如何获得服务器实际返回的内容而无需完全手动(使用我自己的ajax调用,这显然无法扩展)

我想知道其他人在这种情况下使用的是什么

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您可以覆盖适配器上的 shouldBackgroundReloadAll shouldBackgroundReloadRecord 实施。

正如ember适配器文档中所述:

  

商店使用此方法来确定商店是否应该   在store.findAll方法解析后,重新加载一个记录数组   缓存记录数组。

类似的东西:

{{1}}

参考:https://emberjs.com/api/ember-data/2.15/classes/DS.Adapter/methods/shouldBackgroundReloadAll?anchor=shouldBackgroundReloadAll

答案 1 :(得分:0)

您可以通过peekRecord()然后reload()获取每条记录的所有记录。如果您的UI不依赖于模型的isReloading属性,则重新加载不应更改视图直到完成。如果您的API支持coalesceFindRequests,并确保在同一个runloop中对模型的所有记录执行重新加载,则只应触发一个请求。

免责声明:我没有测试过这种方法,但应该可行。如果您遇到任何问题,请告诉我。