2013-07-13 90 views
0

在AngularJS,我想展现一个计数器,显示每个以下组,即在这种情况下“完成/所有”任务:计数过滤表达

food:  1/2 
hygienics: 0/1 

任务列表:

$tasks = [ 
    { 
     title: "buy bacon", 
     group: "food", 
     done: "true", 
    }, 
    { 
     title: "buy tuna", 
     group: "food", 
     done: "false", 
    }, 
    { 
     title: "buy toothpaste", 
     group: "hygienics", 
     done: "false", 
    }, 
]; 

只要我将任务的“完成”设置为“真”,计数器就会自动更新。所以真的,我要寻找一个很好的过滤表达式,如下所示(但“完成”的工作中):

Food: {{ (tasks | filter: {group:'food'}).length }} 

我怎么能包括“做”成的?

回答

2

the documentation

您可以使用此语法链过滤器:

{{ expression | filter1 | filter2 }} 

所以才链中附加的过滤器:

tasks | filter: {group:'food'} | filter: {done: true} 

或者,还是从the documentation

表达 - {串|对象|函数()} -

谓词用于从阵列中选择的项目。

可以是以下之一:

[...]

对象:一个图案对象可用于在由阵列包含的对象过滤特定的属性。例如{名称:“M”,电话:“1”}谓词将返回一个包含属性名称包含“M”和属性手机包含“1”的项目数组。

所以,你也可以使用

tasks | filter: {group:'food', done: true} 

没有测试过,虽然。

+0

谢谢,不会猜到它会是这么简单:) – Ben