我有一个对象列表,通过 Ajax 从 API 获取。这与此类似:
App.Card = Ember.Object.extend({
name: "",
color: ""
});
App.cardsController = Ember.ArrayController.create({
content: [],
createCard: function(data) {
this.pushObject(App.Card.create(data));
},
loadCards: function() {
// Fetch API and use createCard
}
});
当我使用 时{{#each App.cardsController}},我列出了我的控制器内的所有卡。
但我想按颜色过滤它们。如何过滤列表(在控制器的内容中)并显示它们?
我尝试了这种方法:
在里面添加了这段代码App.cardsController:
filterCardsByColor: function() {
array = this.get('content').filter(function(item, index) {
return item.get('color') == 'red';
});
return array;
}.property('content.@each')
并添加{{#each App.cardsController.filterCardsByColor}}到我的观点。
但我的 Chrome 控制台出现以下错误:
Uncaught TypeError: Object [object Object] has no method 'addArrayObserver' ember.min.js:18
我做错了什么?或者我应该怎么做?我应该将该逻辑移至视图吗?如何?我什至尝试包裹array在里面Ember.Array.create(array),但它并没有解决我的问题。
奖励:是否可以向 filterCardsByColor 发送参数,以便我可以要求'red'卡片或'yellow'卡片等?