Я пытаюсь отобразить кучу предметов в кусках из N элементов за раз. Мне нужно вырезать элементы, потому что разметка должна быть табличной/сеткой (для каждой группы из N элементов есть строка, затем столбец для каждого элемента). Вот упрощенная попытка:Почему этот группирующий угловой фильтр вызывает цикл дайджеста?
app.filter('inGroupsOf', function() {
return function (input, groupSize) {
if (!input) {
return [];
}
var result = [];
for (var index = 0; index < input.length; index++) {
var groupIndex = Math.floor(index/groupSize);
if (!result[groupIndex]) {
result[groupIndex] = [];
}
result[groupIndex].push(input[index]);
}
return result;
};
});
<div ng-controller="Ctrl">
<div ng-repeat="itemGroup in items | inGroupsOf:7">
<span ng-repeat="item in itemGroup">{{item.name}}</span>
</div>
</div>
(полная версия здесь: http://jsfiddle.net/bradleybuda/twhVj/3/)
Это приводит к "10 $ дайджеста() Итерации достигли" ошибки. Я посмотрел на принятый ответ на this question, но предложения там не работают для меня (кроме того, что вы нажимаете фильтр и делаете все это в контроллере). Есть ли способ сделать этот вид ng-repeat работы с шаблоном/фильтром? Выполнение этого в контроллере кажется уродливым.