在Ember中,您可以轻松过滤要查找匹配值的数组(仅返回名称==" John)我无法弄清楚如何使用大于或小于的值进行过滤than(返回startDate在今天之前的所有对象
在我的应用程序中,我有一系列可交付成果。我想将这些可交付成果分为三类:十天内到期,过期,然后是其他。
我在另一篇SO帖子中找到了以下示例,但无法弄清楚如何使用它来实现我的目标
filterComputed: function() {
return this.get('content').filter(function(item, index, enumerable){
return item.firstName == 'Luke';
});
}.property('content.@each')
答案 0 :(得分:4)
你可以这样做:
this.get('content').filter(function(item){
return item.get('someProperty') > someVar;
});
答案 1 :(得分:0)
这应该返回您定义的日期范围内的对象数组。应该在Ember ^ 2.x中工作。
filterComputed: computed('content.@each', 'startDate', 'endDate', function() {
return this.get('content').filter(function(item) {
var contentDate = item.get('date'); // expecting item to have a date property
return contentDate > this.get('startDate') && bookingDate < this.get('endDate');
});
})
使用ES6,你甚至可以这样做:
filterComputed: computed('content.@each', 'startDate', 'endDate', function() {
return this.get('content').filter(item => item.get('date') > this.get('startDate') && item.get('date') < this.get('endDate'));
})
如果您的要求更简单,computed.filterBy()
可能适合您。 https://emberjs.com/api/classes/Ember.computed.html#method_filterBy
也很有帮助:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter