在我的ember-app的/ photos路由中,我可以看到,如果我使用查询功能,则记录不会来自本地indexedDB:
该路线有一个带有微调器的加载模板;
如果我在路线上:
model: function() {
return this.store.findAll('photo');
}
记录仅在第一次加载;我看了一下旋转器然后照片就显示了;如果我继续沿着另一条路线返回照片路线,则不显示微调器,数据从本地indexedDB获取,并且在后台完成对REST api的新请求;
但如果我这样做
model: function() {
return this.store.query('photo', {}});
}
我不仅是第一次看到旋转器,而且每次打开路线时都会看到旋转器; 所以我想再次获取数据
答案 0 :(得分:2)
为了澄清,ember-data
的目的是确保消耗的数据尽可能与服务器同步。因此调用findAll
它将返回新数据以确保它没有改变。另一方面,您可以使用findRecord
,peekRecord
和peekAll
等方法来控制
你想要从缓存或新加载的数据
peekRecord
将从一个模型的缓存中专门加载数据。
http://emberjs.com/api/data/classes/DS.Store.html#method_peekRecord
如果您希望从要使用的缓存加载内容findRecord
。如果未加载,它将发出请求,然后后续请求将来自缓存。
store.findRecord('filter', 1)
http://emberjs.com/api/data/classes/DS.Store.html#method_findRecord
我还建议您使用ember inspector浏览器扩展来查看缓存中加载了哪些模型,以便更清晰。
如果您想查看模型的所有当前加载的内容,可以使用peekAll
http://emberjs.com/api/data/classes/DS.Store.html#method_peekAll