Emberjs filter()与filterProperty()

时间:2013-06-04 18:28:43

标签: ember.js

似乎filter()filterProperty()非常相似,两者都是返回过滤数组的Enumerable函数。

我应该在什么情况下使用其中一种?

1 个答案:

答案 0 :(得分:32)

更新: filterProperty()已被filterBy()取代。用法相同,请参阅下面的评论。

filterBy()filter()的快捷方式,可让您根据可枚举元素的指定属性快速筛选可枚举项。如果您需要执行更复杂或不同寻常的操作filter(),请使用filterBy()

例如,假设你有一个像这样的对象数组:

[
  {firstName: 'Kris', lastName: 'Selden'},
  {firstName: 'Luke', lastName: 'Melia'},
  {firstName: 'Formerly Alex', lastName: 'Matchneer'}
]

并且您希望拥有一个使用过滤器数组的计算属性,仅包含firstName == 'Luke'的人:

使用filter()

filterComputed: function() {
  return this.get('content').filter(function(item, index, enumerable){
    return item.firstName == 'Luke';
  });
}.property('content.@each')

使用filterBy()

filterByComputed: function() {
  return this.get('content').filterBy('firstName', 'Luke');
}.property('content.@each')

JSBin example