嵌套的ng-repeat在同一个数组级别

时间:2013-04-19 00:05:53

标签: jquery angularjs

如何在每次重复3次后添加“div”?

这是我的阵列:

[
   client : "name",
   client : "name",
   client : "name",
   client : "name",
   client : "name",
   client : "name",
   client : "name",
   client : "name",
   client : "name",

]

预期结果是:

<div>name</div>
<div>name</div>
<div>name</div>
<div class="clear"></div>
<div>name</div>
<div>name</div>
<div>name</div>
<div class="clear"></div>
<div>name</div>
<div>name</div>
<div>name</div>
<div class="clear"></div>

4 个答案:

答案 0 :(得分:1)

为什么不分割你的初始数组?

[
    [
        client : "name",
        client : "name",
        client : "name"
    ],
    [
        client : "name",
        client : "name",
        client : "name"
    ],
    [
        client : "name",
        client : "name",
        client : "name"
    ]
]

答案 1 :(得分:1)

创建一个过滤器,以三个为一组拆分数组并嵌套这些组。

过滤器应该是这样的:

app.filter('split', function() {
  return function(target) {
    var splitted = [];

    if (!target) {
      return target;
    }

    for(var i = 0; i < target.length; i += 3) {
      splitted.push(target.slice(i, i+3));
    }

    return splitted;
 }
});

在你的控制器中,只需初始化:

$scope.original = [1, 2, 3, 4, 5, 6, 7, 8, 9];

最后,这就是你的HTML应该是这样的:

<div ng-repeat="group in original | split">
  <div ng-repeat="item in group">{{item}}</div>
  <div class="clear"></div>
</div>

您可以参数化组长度。这可以通过向过滤器添加第二个参数并传递ng-repeat="group in original | split:3"来实现。

不是原始数组未被修改。这是working Plunker

答案 2 :(得分:1)

对此的一个解决方案是在循环内部使用$index角度变量,就像在此plunker中一样。 http://plnkr.co/edit/ycnPtBLmbtV8hwIFTsGd?p=preview

此外,您发布的数据不是有效的数组或有效的json。我假设你不得不与json打交道。如果您的意思是数组,那么同样的$index方法也可以用于数组。

答案 3 :(得分:-1)

你可以循环遍历数组,检查该迭代是否可以被3整除并插入额外的div?