这是我与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中的基础记录?
感谢。
答案 0 :(得分:2)
等待承诺解决,然后将第一个记录设置为剧集。当您通过查询客户端找到时,您不知道将返回的结果数量。所以它给你一个集合,可以是0+记录。与id不同,它知道它是单个记录,因此是两种不同类型的代理。
var self = this;
this.store.find('episode', {anotherField: x}).then(function(results){
self.set('episode', results.get('firstObject'));
});