灰烬数据:ManyArray的元素在哪种情况下为空?

时间:2019-01-10 22:02:13

标签: ember.js ember-data

我对错误报告记录的错误感到困惑: 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属性由Ember Data hasMany关系的ManyArray填充。设置如下所示:

// 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.2ember-data@2.16.3看到了这一点。

  

“您遇到了Ember Data错误,因为ManyArray的条目不得为null如果它包含了为什么应考虑使用该参数的论点,也将是一个有效的答案一个错误。在这种情况下,指向维护者的文件或官方声明会很好。

这个问题主要不是关于修复我的应用程序中的错误。它仅记录一次,并不重要。如果只是在编写处理ManyArray s的代码时考虑这种情况,我只是好奇。

0 个答案:

没有答案