计算过滤的表达式

时间:2013-07-13 20:07:16

标签: angularjs filter

在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 }}

如何在此包含“完成”?

1 个答案:

答案 0 :(得分:2)

来自the documentation

  

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

{{ expression | filter1 | filter2 }}

所以只需链接一个额外的过滤器:

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

或者,仍然来自the documentation

  

表达式 - {string | Object | function()} -

     

用于从数组中选择项目的谓词。

     

可以是以下之一:

[...]

  

对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:“M”,phone:“1”}谓词将返回一个项目数组,其属性名称包含“M”,属性手机包含“1”。

所以你也可以使用

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

但未经过测试。