peekRecord()无效但peekAll()正在工作

时间:2016-06-02 13:42:47

标签: ember.js ember-data

我的后端始终响应所有可用数据,并且花费了相当多的时间。所以我定期重新加载商店,我计划使用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()在模型中适用于我。

1 个答案:

答案 0 :(得分:4)

这两种方法的语义是:

  • store.peekAll返回一个在存储更新时更新的实时数组。
  • store.peekRecord返回当前缓存中的相应对象,或null,并且不会更新。

因此,您观察的行为是预期的行为。如果您想使用peek方法,我的建议是在从商店获取任何数据之前确保初始请求已完成加载。