在控制器中访问模型集合 - Ember2.5

Accessing a model collection in controller - Ember2.5

在控制器上创建计算 属性 时尝试访问控制器模型时,出现以下错误:

model.uniqBy is not a function

app/controller/ticket.js

export default Ember.Controller.extend({
  statuses: Ember.computed('model', function() {
      var model = this.get('model');
      return model
              .uniqBy('status')
              .map(function(i) { return i.status; })
              .toArray();
  }),
});

我给控制器的模型是从 this.store.findAll('ticket'); 返回的集合,但试图遍历它似乎导致了上述错误。提供给模型的集合不应该是 Ember.Enumerable 对象吗?我是否应该尝试通过 DS.Store 访问集合(在这种情况下我不明白需要将模型传递给控制器​​)​​?

Ember.computed.uniqBy

A computed property which returns a new array with all the unique elements from an array, with uniqueness determined by specific key

请尝试使用此方法计算 属性

statuses: Ember.computed.uniqBy('model', 'status')

编辑

如果需要,您可以在此 属性 上使用 ember 计算地图来微调您的阵列,例如像这样

status: Ember.computed.map('statuses', function(status, index)
  return status.toUpperCase() + '!';
})

另一种方法是计算 属性 使用此处描述的动态聚合语法

https://guides.emberjs.com/v2.6.0/object-model/computed-properties-and-aggregate-data/

所以Ember.computed('model.@each.status',函数()

希望对您有所帮助