角度绑定到过滤计数

时间:2016-03-14 10:25:19

标签: javascript angularjs lodash

我有这个数组:

[
    {
      type: "hhh",
      items: [
        {
          "name": "EGFR",
          "type": "a",
          "selected": true
        }
      ]
    },
    {
      type: "aaa",
      items: [
        {
          "name": "mm",
          "type": "b",
          "selected": false
        }
      ]
    },
    {
      type: "ii",
      items: [
        {
          "name": "pp",
          "type": "bb",
          "selected": true
        }
      ]
    }
  ]

我想显示具有所选属性“true”的项目的计数器。 我想让它在变化时实时更改。 (没有手表和功能)

Thnaks!

2 个答案:

答案 0 :(得分:0)

这是方法:

var current_selected = {
get amount(){
    var res = 0;
    arr.forEach(function(item, i, arr) {
      if (item.items[0].selected) res++;
      })
      return res;
  }
}

通话:

current_selected.amount

Fiddle

答案 1 :(得分:0)

您可以使用JsonPath获取计数。使用JsonPath还具有处理复杂json结构的额外优势。对于您提供的示例,您只需要包含jsonpath js文件并在脚本中使用以下内容:

console.log(arr);
var filtered = jsonPath(arr, "$.[*].items[?(@.selected==true)]");
console.log(filtered);
console.log(filtered.length);

其中arr是你的json结构。

JsonPath可以来自: https://code.google.com/archive/p/jsonpath/downloads

JsonPath帮助: http://goessner.net/articles/JsonPath/

在其他来源中可能有更新版本,但那是我曾经使用过的