过滤AngularJS模板中的嵌套列表,并获取过滤数据的计数

时间:2015-08-23 15:32:37

标签: javascript angularjs

是否可以使用AngularJS过滤嵌套列表并在返回过滤后的嵌套项目时计算数字?

目标是按read:true过滤每个项目。

以下是数据:

guest = [
  {"id":148,"guest":2,"user":1,"read":true},
  {"id":147,"guest":2,"user":1,"read":false},
  {"id":58,"guest":2,"user":1,"read":false}
]

此数组称为guest,数组中的每个项目都是message

模板过滤器的语法是这样的吗?

{{ (for m in guest.messages | filter: m.read: true).length }}

这里的关键是不使用ng-repeat 。关于如何使用 ng-repeat 执行此操作有很多答案,但不能在单个语句中过滤嵌套列表。

这可能在template中,或者可能唯一的方法是在controller

提前致谢

1 个答案:

答案 0 :(得分:1)

从视图中的代码可读性角度来看,简单的自定义过滤器可能是最好的

app.filter('numRead', function(){
   return function(guestArr){
     return guestArr.filter(function(guest){
       return guest.read;
     }).length
   }      
});

用法:

Read count = {{guest| numRead}}

DEMO