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

我怎样才能在其中包含“完成”?

4

1 回答 1

2

文档中

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

{{ expression | filter1 | filter2 }}

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

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

或者,仍然来自文档

表达式 - {string|Object|function()} -</p>

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

可以是以下之一:

[...]

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

所以你也可以使用

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

不过没有测试。

于 2013-07-13T20:56:45.490 回答