如何使用filterBy函数使用多个值来过滤列表?
我的方案是 - 我有一个控制台列表,我希望根据console_id进行过滤。
不幸的是,我无法控制JSON,因此每个控制台都有不同的ID。我想遍历嵌套的assignedConsole JSON中的Console ID,然后通过root assignedConsole JSON进行过滤。
我可以获取第一个对象的控制台ID并将其放入过滤器但我不知道如何使用两个值
我创建了一个emberjs bin来演示我的问题:http://emberjs.jsbin.com/kojute/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()
调用只会删除数组中找到的所有重复项。