如何在角度应用程序中显示具有特定类别的数组的.length

时间:2016-11-15 04:16:41

标签: javascript angularjs

我有一组标签,显示标签打开的每个容器中的项目数量。您将在下面看到该过滤器。我希望在filtered.length中显示对象的数量。

这是我的数据:

[
{
  "img":"assets/images/gallery/girls-1.jpg",
  "group": "girls",
  "title": "Image 1",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/girls-2.jpg",
  "group": "girls",
  "title": "Image 2",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/girls-3.jpg",
  "group": "girls",
  "title": "Image 3",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/music-1.jpg",
  "group": "music",
  "title": "Image 4",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/music-2.jpg",
  "group": "music",
  "title": "Image 5",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/music-3.jpg",
  "group": "music",
  "title": "Image 6",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/music-4.jpg",
  "group": "music",
  "title": "Image 7",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/music-5.jpg",
  "group": "music",
  "title": "Image 8",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-1.jpg",
  "group": "nature",
  "title": "Image 9",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-2.jpg",
  "group": "nature",
  "title": "Image 10",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-3.jpg",
  "group": "nature",
  "title": "Image 11",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-4.jpg",
  "group": "nature",
  "title": "Image 12",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-5.jpg",
  "group": "nature",
  "title": "Image 13",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-6.jpg",
  "group": "nature",
  "title": "Image 14",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/nature-7.jpg",
  "group": "nature",
  "title": "Image 15",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/space-1.jpg",
  "group": "space",
  "title": "Image 16",
  "desc": "Description",
  "link":""
},
{
  "img":"assets/images/gallery/space-2.jpg",
  "group": "space",
  "title": "Image 17",
  "desc": "Description",
  "link":""
}
]

这是页面的一个screnshot。 关注每个标签中的数字。这些数字显示该类别中有多少图像,随后,这将显示在右侧有多少图像。但那部分已经完成了。我只是想以编程方式显示这些数字。

enter image description here

这是我的过滤HTML

   <ul ng-init="tab = 1" class="list-group">
        <li ng-class="{active:panel.isSelected(1)}">
            <a class="list-group-item" ng-click="panel.selectTab(1); groupFilter = {}">All
            <span class="badge badge-primary">{{galleries.length}}</span></a>
        </li>
        <li ng-class="{active:panel.isSelected(2)}">
            <a class="list-group-item" ng-click="panel.selectTab(2); groupFilter ={group:'nature'}">Nature
            <span class="badge badge-success"><!--The amount of items of group Nature. 7 --></span></a>
        </li>
        ...


  </ul>

先谢谢你们。自学角色。

2 个答案:

答案 0 :(得分:7)

$scope.categoryLength = function(category) {
  var count = 0;
    angular.forEach($scope.category_array, function(item){
        count += item.group == category ? 1 : 0;
    });
    return count; 
}

将该功能称为:

{{categoryLength("nature")}}

它给出了传递给函数的组的长度。

答案 1 :(得分:1)

试试这个

var counts ={};
for(var i = 0 ; i < items.length ; i++) {
  counts[items[i].group] = counts[items[i].group] ?   counts[items[i].group]+1 : 1;
}
console.log(counts);

这将打印

{ girls: 3, music: 5, nature: 7, space: 2 }