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

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() 适合我的模型。

loc*_*cks 5

这两种方法的语义是:

  • store.peekAll 返回一个实时数组,该数组随着商店的更新而更新。
  • store.peekRecord返回当前缓存中对应的对象,或者null,不更新。

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