Как подсчитать размер карты в AngularJS

У меня есть карта с ключевыми значениями следующим образом

$scope.items = {
  {
    0={"name": "Jim", "age" : 25}
  },
  {
    1={"name": "Eric", "age" : 25}
  }
};

если он был массивом для подсчета размера я с помощью:

<div ng-repeat="item in items>
</div>

и имеют размер {{items.length}}

В случае карты я с итерированием элементов следующим образом:

<div ng-repeat="(id, item) in items">
</div>

но как установить размер?

Любая помощь приветствуется.

Ответ 1

Один подход заключается в вычислении количества ключей в объекте с помощью Object.keys:

$scope.itemsLength = Object.keys($scope.items).length;

вы также можете определить вспомогательную функцию:

$scope.getLength = function(obj) {
    return Object.keys(obj).length;
}

и использовать его в шаблоне:

{{ getLength(items) }}

Ответ 2

Я предлагаю использовать для этого фильтр, который можно использовать в приложении:

angular.module('filters').filter('objectKeysLength', [function() {
    return function(items) {
        return Object.keys(items).length;
    };
}]);

Затем используйте его:

{{ items | objectKeysLength }}

или

<div ng-if="(items | objectKeysLength) > 0" >
    ...content...
</div>