由于您不能ng-if
在 1.0.8 中使用,这里有两个解决问题的变体。他们都将 3 个项目包装成一个表格行div
外部循环以三个为一组进行计数,因此每个外部 table-row 触发一次div
。第二种方法使用过滤器来控制循环范围,但它应该具有更好的性能。第一种方法不需要新的过滤器。
然后内部ng-repeat
循环遍历一行中的 3 个项目。它使用 slice 来获取该特定行所需的 3 个数组项。
这是两种变体都起作用的小提琴:http: //jsfiddle.net/f8D8q/4/
选项 1:没有新过滤器的解决方案:
<div ng-repeat='itemtmp in items|limitTo:(items.length/3)+1'>
<div class="table-row">
<span ng-repeat='item in items.slice($index*3,($index*3+3))'>
{{item.name}} - {{$index}}
</span>
</div>
</div>
选项 2:使用来自http://www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge-your-webapp.html#more-about-loops的范围过滤器的更高效的解决方案
<div ng-repeat="n in [] | range:(items.length/3)+1">
<div class="table-row">
<span ng-repeat='item in items.slice($index*3,($index*3+3))'>
{{item.name}} - {{$index}}
</span>
</div>
</div>
和相关的范围过滤器:
app.filter('range', function () {
return function (input, total) {
total = parseInt(total);
for (var i = 0; i < total; i++) {
input.push(i);
}
return input;
};
});
两者都经过测试(低至 1.0.2)并且可以工作。