基于模型的控制器计算属性仅在循环中有效

时间:2015-09-01 23:15:10

标签: ember.js ember-data ember-cli

我在Ember中有以下内容

路线

model: function() {
  return this.store.findAll('competency');
}

控制器

calendarItems: Ember.computed('model', function() {
  return this.get('model').map(function(competency) {
    return {
      'name': competency.get('title'),
      'start': competency.get('endDate')
    };
  });
})

模板

{{#each model as |item|}}
  {{log calendarItems}}
{{/each}}

{{log calendarItems}}

由于某些我不知道的原因,循环内的{{log calendarItems}}正确显示模型中正确映射的所有商店项目。但只有当{{log calendarItems}}不存在于循环之外时才会出现。

{{log calendarItems}}也出现在循环之外时,它会导致所有4个日志语句返回[],就好像模型没有任何要映射的内容一样。

如果{{log calendarItems}}独立,它也会返回[]

我在这里错过了关于Ember的基本信息吗?

提前致谢, 莱恩

1 个答案:

答案 0 :(得分:1)

这不一定能修复日志记录,但它应该修复计算属性,因为它应该在记录可用时更新(如果真正的问题是对象是异步加载的,这是我的怀疑)

calendarItems: Ember.computed('model.@each.{title,endDate}', function() {
  return this.get('model').map(function(competency) {
    return {
      'name': competency.get('title'),
      'start': competency.get('endDate')
    };
  });
})