我的后端始终响应所有可用数据,并且花费了相当多的时间。所以我定期重新加载商店,我计划使用peekAll()和peekRecord()。
我的代码是:
model: function() {
return Ember.RSVP.hash({
'clusters': this.store.peekAll('cluster'),
'single': this.store.peekRecord('cluster', 'cluster::My')
});
执行代码时,首先我可以看到这两个项目都不包含内容。几秒钟后,数据被加载到存储中,我可以按预期在模板上看到内容“簇”。但是“单一”仍然完全没有内容({{model.single}}在模板中不返回任何内容)。但当我有一个动作按钮时:
alert(this.store.peekRecord('cluster', 'cluster::My'));
我可以看到记录被发现了。记录也可以通过Ember Inspector获得。我做错了,只有peekAll()在模型中适用于我。
答案 0 :(得分:4)
这两种方法的语义是:
store.peekAll
返回一个在存储更新时更新的实时数组。store.peekRecord
返回当前缓存中的相应对象,或null
,并且不会更新。因此,您观察的行为是预期的行为。如果您想使用peek
方法,我的建议是在从商店获取任何数据之前确保初始请求已完成加载。