EmberJS DS.PromiseObject vs DS.PromiseArray

时间:2014-06-17 16:46:22

标签: ember.js ember-data

这是我与Ember的第一次见面,我正在尝试从REST api中检索数据。当我在我的控制器中使用以下调用find()时,它可以工作:

this.set('episode', this.store.find('episode', 1);

这将返回DS.PromiseObject,并更新模板中的绑定输入控件以反映返回的值。

但是,当我使用以下调用find()时,使用查询:

this.set('episode', this.store.find('episode', {anotherField: x});

这将返回DS.PromiseArray,并且模板中的绑定控件不会更新。

我只希望此调用返回单个记录并且不知道ID,因此我无法使用第一个有效的示例。

如何从控制器访问DS.PromiseArray中的基础记录?

感谢。

1 个答案:

答案 0 :(得分:2)

等待承诺解决,然后将第一个记录设置为剧集。当您通过查询客户端找到时,您不知道将返回的结果数量。所以它给你一个集合,可以是0+记录。与id不同,它知道它是单个记录,因此是两种不同类型的代理。

var self = this;
this.store.find('episode', {anotherField: x}).then(function(results){
  self.set('episode', results.get('firstObject'));
});