Это большое улучшение с 1.13 до 3.5.
Многое изменилось. Чтобы полностью понять, что изменилось и почему, я настоятельно рекомендую читать каждый из примечаний к выпуску Ember каждый раз, когда вы обновляете минорную или основную версию. Супер полезно.
Скорее всего author
не было загружено в магазин. Проверьте данные маршрута model()
, сетевой запрос и Ember Inspector, если данные загружены в.
Если загружено, это может быть async: true
. Попробуйте удалить это?
Это рабочий пример в Ember 3.5:
app/models/thing.js
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo } from 'ember-data/relationships';
export default Model.extend({
// Attributes
title: attr('string'),
description: attr('string'),
published: attr('string'),
publishedAt: attr('string'),
// Relationships:
// No need for async: true
course: belongsTo('course'),
author: belongsTo('author')
});
app/models/author.js
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
name: attr('string')
});
app/route/thing.js
import Route from '@ember/routing/route';
export default Route.extend({
model(params) {
// Assuming you use JSON API
// Make sure `author` is included when fetching `thing`
return this.store.query('thing', {
include: 'author, course'
}),
}
});
app/controllers/thing.js
import Controller from '@ember/controller';
export default Controller.extend({
init(){
console.log(this.model.author.name)
}
});