Вот код: plnkr.co
HTML:
<!DOCTYPE html>
<html ng-app="example">
<head>
<script data-require="[email protected]" data-semver="1.11.3" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script data-require="[email protected]" data-semver="1.2.28" src="https://code.angularjs.org/1.2.28/angular.js"></script>
</head>
<body ng-controller="mainCtrl">
<div ng-repeat="(key, val) in obj | groupPlayers">
{{key}} = {{ val }}
</div>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
script.js
(function() {
angular
.module('example', [])
.controller('mainCtrl', function($scope) {
$scope.obj = [
{ lastname: 'Jackson', firstname: 'George', score: 6},
{ lastname: 'Jackson', firstname: 'George', score: 10},
{ lastname: 'Smith', firstname: 'Michael', score: 8},
{ lastname: 'Smith', firstname: 'Amanda', score: 2},
{ lastname: 'Smith', firstname: 'Michael', score: 7},
{ lastname: 'Doe', firstname: 'John', score: 4},
];
})
.filter('groupPlayers', function() {
return function(list, search) {
var group = {};
var key;
angular.forEach(list, function(item) {
key = item.lastname + ' ' + item.firstname;
if(!group[key])
group[key] = [];
group[key].push(item.score);
});
return group;
}
})
;
})();
Я хочу группировать элементы объекта, чтобы отображать игрока с плеером. Я создаю угловой фильтр для выполнения этой работы. Дисплей в порядке, но у меня есть ошибка в консоли, и я не нахожу проблему после часа анализа!
Ошибка: Достигнуто 10 $ digest() итераций. Aborting!
благодаря
При использовании <div ng-repeat="(key, val) in objFiltered">
и $scope.objFiltered = $filter('groupPlayers')($scope.obj);
ошибка больше не возникает.