Я потерян в обещаниях данных Ember и имеет более хорошие отношения. Вот что у меня есть:Ember: async hasMany issue issue
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
возвращается сервером с массивом ID representations
и массивом ID tarifs
. Representations
объекты возвращаются в том же ответе ниже. Tarifs
уже в магазине, благодаря первому звонку.
Вот модель оправ:
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 })
});
Проблема: от того, что я могу видеть (с помощью плагина уголек браузера), 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
- нет.
Я что-то не так?