Mar*_*rác 3 ember.js ember-data
我的后端总是用所有可用的数据进行响应,这花费了相当多的时间。所以我定期重新加载商店,我计划使用 peekAll() 和 peekRecord()。
我的代码是:
model: function() {
return Ember.RSVP.hash({
'clusters': this.store.peekAll('cluster'),
'single': this.store.peekRecord('cluster', 'cluster::My')
});
Run Code Online (Sandbox Code Playgroud)
执行代码时,起初我可以看到这两个项目都不包含内容。几秒钟后,数据被加载到存储中,我可以按预期在模板上看到内容“集群”。但是 'single' 仍然完全没有内容({{model.single}} 在模板中不返回任何内容)。但是当我有一个带动作的按钮时:
alert(this.store.peekRecord('cluster', 'cluster::My'));
Run Code Online (Sandbox Code Playgroud)
我可以看到记录已找到。记录也可通过 Ember Inspector 获得。我做错了什么,只有 peekAll() 适合我的模型。
这两种方法的语义是:
store.peekAll
返回一个实时数组,该数组随着商店的更新而更新。store.peekRecord
返回当前缓存中对应的对象,或者null
,不更新。因此,您观察到的行为是预期的行为。如果您想使用这些peek
方法,我的建议是确保在从存储中获取任何数据之前初始请求已完成加载。