我有一个对象列表,通过 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'
卡片等?