Ember filterBy - 使用多个值进行过滤

时间:2014-12-18 11:18:24

标签: javascript json ember.js

如何使用filterBy函数使用多个值来过滤列表?

我的方案是 - 我有一个控制台列表,我希望根据console_id进行过滤。

不幸的是,我无法控制JSON,因此每个控制台都有不同的ID。我想遍历嵌套的assignedConsole JSON中的Console ID,然后通过root assignedConsole JSON进行过滤。

我可以获取第一个对象的控制台ID并将其放入过滤器但我不知道如何使用两个值

我创建了一个emberjs bin来演示我的问题:http://emberjs.jsbin.com/kojute/2/

2 个答案:

答案 0 :(得分:1)

在我之前的回答中做了一些澄清之后,我意识到你想通过控制台过滤而不是过滤assignedConsole值。我的建议是在控制器上添加selectedConsole属性,并为所选控制台显示assignedConsoles数组。

使用JSBin:http://jsbin.com/nuroyuvuta/9

答案 1 :(得分:0)

编辑:请参阅我的其他答案,了解有效的解决方案!

我建议在您的模型或控制器上创建一个计算属性,为您展平嵌套结构:

allConsoles: function() {
  return this.get('consoles')
    .mapProperty('assignedConsoles').reduce(function(a, b) {
      return a.concat(b);
    })
    .uniq();
}.property('consoles.@each')

这将首先获取consoles属性中的所有项目,然后将其所有assignedConsoles映射到中间值,然后通过将所有assignedConsoles添加到一起来减少该值。最后的uniq()调用只会删除数组中找到的所有重复项。