peekRecord() 不工作但 peekAll() 工作

peekRecord() is not working but peekAll() is working

我的后端总是用所有可用数据进行响应,这花费了相当多的时间。所以我定期重新加载存储,我计划使用 peekAll() 和 peekRecord()。

我的代码是:

model: function() {
  return Ember.RSVP.hash({
    'clusters': this.store.peekAll('cluster'),
    'single': this.store.peekRecord('cluster', 'cluster::My')
});

执行代码时,起初我看到这两项都不包含内容。几秒钟后,数据被加载到存储中,我可以按预期在模板上看到内容 'clusters'。但是 'single' 仍然完全没有内容({{model.single}} 在模板中没有 return nothing)。但是当我有一个带有动作的按钮时:

alert(this.store.peekRecord('cluster', 'cluster::My'));

我可以看到找到了记录。记录也可以通过 Ember Inspector 获得。我做错了什么,只有 peekAll() 在我的模型中工作。

两种方法的语义是:

  • store.peekAll returns 随商店更新而更新的实时数组。
  • store.peekRecordreturns当前缓存中对应的对象,或者null,不更新。

所以您观察到的行为是预期的行为。如果您想使用 peek 方法,我的建议是确保初始请求已完成加载,然后再从商店中获取任何数据。