一度に 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 $digest() iterations reached" エラーが発生します。この質問に対する受け入れられた回答を見てきましたが、そこにある提案は機能しません(フィルターをnukingし、コントローラーでこれをすべて行う以外は)。この種の ng-repeat をテンプレート/フィルターで機能させる方法はありますか? コントローラーでそれを行うのは見苦しいです。