在控制器上创建计算属性时尝试访问控制器模型时,出现以下错误:
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访问该集合(在这种情况下,我不明白是否需要将模型传递给控制器)?
答案 0 :(得分:1)
Ember.computed.uniqBy
一个计算属性,它返回一个包含数组中所有唯一元素的新数组,其唯一性由特定键确定
请尝试使用此计算属性
statuses: Ember.computed.uniqBy('model', 'status')
修改
您可以在此属性上使用ember computed map来根据需要微调数组,例如像
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',function()
希望有所帮助