Как подсчитать размер карты в 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>