我迷失在Ember的数据承诺中并且拥有更多的关系。这就是我所拥有的:
tarifs和预留都在应用程序启动时加载(成功):
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return Em.RSVP.hash({
tarifs: this.store.find('tarif'),
reservations: this.store.find('reservation')
});
}
});
然后,tarifs
和reservations
被限制为spectacles
:
App.SpectaclesRoute = Ember.Route.extend({
isLoaded:false,
model: function() {
if(this.isLoaded) {
return this.store.all('spectacle');
}
this.isLoaded = true;
return this.store.find('spectacle');
}
});
服务器返回 Spectacles
,其中包含representations
ID数组和tarifs
ID数组。 Representations
个对象在同一个响应中返回,如下所示。由于第一次通话,Tarifs
已经在商店里了。
以下是Spectacle模型:
App.Spectacle = DS.Model.extend({
titre: DS.attr('string'),
sousTitre: DS.attr('string'),
visuelUrl: DS.attr('string'),
tarifs: DS.hasMany('tarif', { async: true }),
representations: DS.hasMany('representation', { async: true })
});
问题是:从我看到的内容(使用ember浏览器插件),spectacles
和tarifs
没有关联(spectacles
和representations
都是)。我能找到的唯一区别是它们是在两个独立的服务器调用中加载的,但它不应该是一个问题,对吧?
我认为这可能是异步/承诺问题。从表现来看,我的需要是获得第一个奇观。简而言之:myRepresentation.spectacle.tarifs [0]。我尝试了各种各样的东西,比如:
representation.get('spectacle.tarifs').then(function(tarifs) {
var tarif = tarifs.get('firstObject');
console.log(tarif);
}
什么都不起作用:tarif
始终为空。似乎已加载所有记录,但spectacle
和tarifs
之间的关系不是。
我做错了吗?
答案 0 :(得分:0)
好的,忘记了,问题出在tarif
模型中:
App.Tarif = DS.Model.extend({
nom: DS.attr('string'),
montant: DS.attr('number'),
spectacle: DS.belongsTo('spectacle', { async: true })
});
“belongsTo”关系是一个错误,因为tarif
可以链接到许多spectacles
。我刚删除了这一行,现在一切都很好。