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.peekRecord
returns当前缓存中对应的对象,或者null
,不更新。
所以您观察到的行为是预期的行为。如果您想使用 peek
方法,我的建议是确保初始请求已完成加载,然后再从商店中获取任何数据。
我的后端总是用所有可用数据进行响应,这花费了相当多的时间。所以我定期重新加载存储,我计划使用 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.peekRecord
returns当前缓存中对应的对象,或者null
,不更新。
所以您观察到的行为是预期的行为。如果您想使用 peek
方法,我的建议是确保初始请求已完成加载,然后再从商店中获取任何数据。