在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 }}
如何在此包含“完成”?
答案 0 :(得分:2)
您可以使用以下语法链接过滤器:
{{ 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}
但未经过测试。