Я использую ember 2.8.0 и ember-data 2.8.0. У меня есть следующие модели определены:данные ember не загружаются. К модели
//app/models/store.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
floor: DS.belongsTo('floor'),
number: DS.attr('string'),
phone: DS.attr('string'),
email: DS.attr('string'),
photo: DS.attr(),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date')
});
//app/models/floor.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
stores: DS.hasMany('store'),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date')
});
Мои router.js имеет следующие маршруты:
//app/router.js
this.route('stores', function() {
this.route('new');
this.route('edit');
});
Мои шаблоны/магазины/index.hbs имеет следующее заявление: {{#each}}
<tbody>
{{#each model as |store|}}
<tr>
<td>{{store.name}}</td>
<td>{{store.number}}</td>
<td>{{store.floor.name}}</td>
<td>{{store.phone}}</td>
<td>{{store.email}}</td>
<td>{{moment-format store.createdAt}}</td>
<td>{{moment-format store.updatedAt}}</td>
</tr>
{{/each}}
</tbody>
Я бы предположил, что линия {{store.floor.name}}
будет иметь ма запрос на/floor/{id} для каждой строки в таблице.
Что мне не хватает? Каков правильный способ справиться с этим в Ember?
Должно ли мое api вернуть что-то другое, чем внизу?
[{"id":1,"floorId":1,"name":"McDonalds","number":"10-A","phone":"(11) 2020-3455","email":"[email protected]","photo":null,"createdAt":"2016-09-15T13:45:32.000Z","updatedAt":"2016-09-15T13:45:32.000Z"}]
Следует ли использовать другие крючки модели для загрузки соответствующей модели вручную?
Имена атрибутов вашей модели 'store' должны соответствовать тому, что дает вам сервер, если только вы не определили какую-либо специальную обработку для них в адаптерах/сериализаторах/где-то (я забываю, где именно это происходит сейчас), что кажется маловероятным. Итак, верните «пол» вместо «floorId», и все может начать работать. – Thernys
пятно на @Thernys, спасибо! Интересно, что изменение того, что возвращает мой api, исправляет его, однако изменение имени свойства моей модели с 'floor' на' floorId' не происходит. Это будет какое-то условное соглашение? Также, чтобы ответить на вопрос? –
Также вы найдете, где вы можете настроить обработку, как вы упомянули @Thernys: https://guides.emberjs.com/v2.8.0/models/customizing-serializers/#toc_relationships –