我有一个对象列表,通过Ajax从API中获取。它类似于这样:如何使用Ember.js显示(在视图中)列表子集?
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}}
,我列出所有的卡我的控制器内。
但我想按颜色过滤它们。我如何过滤列表(在Controller内容中)并显示它们?
我尝试这样的做法:
添加代码里App.cardsController
:
filterCardsByColor: function() {
array = this.get('content').filter(function(item, index) {
return item.get('color') == 'red';
});
return array;
}.property('[email protected]')
并补充{{#each App.cardsController.filterCardsByColor}}
我的看法。
但我收到以下错误,在我的Chrome控制台:
Uncaught TypeError: Object [object Object] has no method 'addArrayObserver' ember.min.js:18
我做错了吗?或者我该怎么做?我应该将该逻辑移至一个视图吗?怎么样?我甚至尝试在Ember.Array.create(array)
内包装array
,但它没有解决我的问题。
奖励:是否可以发送参数到filterCardsByColor,所以我可以要求'red'
卡或'yellow'
卡等?
注:我试图使用从http“myFilteredArray'://计算器。com/questions/11502300/how-to-get-index-item-of-array-in-emberjs-view - 我猜我没有正确使用它。 – jmonteiro 2013-02-11 02:31:55
您正在使用哪个版本的Ember.js?定义计算的属性不再是Ember.Object.create – Luan 2013-02-11 03:57:52
@Luan:我正在使用1.0.0-pre4。 – jmonteiro 2013-02-13 12:12:21