Я запутался в ошибке, записанной в отчете об ошибках:
TypeError: Cannot read property 'isArchived' of null
Ошибка генерируется в вычисляемом свойстве с использованием макроса filter
:
// app/templates/components/items-table.hbs
import Component from '@ember/component';
import { get } from '@ember/object';
import { filter } from '@ember/object/computed';
export default Component.extend({
filteredItems: filter('items.@each.isArchived', function(item) {
return !get(item, 'isArchived');
}),
});
Свойство items заполняется ManyArray
отношения Ember Data hasMany
. Настройка выглядит следующим образом:
// app/routes/building.js
export default Route.extend({
model({ buildingId }) {
return this.get('store').findRecord('building', buildingId);
}
});
// app/templates/building.hbs
{{items-table
items=model.items
}}
// app/models/building.js
import DS from 'ember-data';
export default Model.extend({
items: hasMany('item'),
});
// app/models/items.js
import DS from 'ember-data';
export default Model.extend({
building: DS.belongsTo('building'),
});
Я видел это с ember@2.18.2
и ember-data@2.16.3
.
"Вы столкнулись с ошибкой в Ember Data, поскольку запись в ManyArray не должна быть null
" также будет правильным ответом, если она содержит аргументы, почему это следует считать ошибкой. В этом случае было бы замечательно указывать на документацию или официальные заявления сопровождающих.
Этот вопрос в основном не касается исправления ошибки в моем приложении. Это было зарегистрировано только один раз и не критично. Мне просто любопытно, если я буду учитывать этот крайний случай при написании кода, который имеет дело с ManyArray
s.