AngularJS-嵌套的ng-repeat全局索引

时间:2019-01-24 10:11:17

标签: angularjs angularjs-ng-repeat angularjs-ng-init ng-init

我有下一个模板:

<div data-ng-repeat="supplier in order.Suppliers" data-ng-init="supplierIndex = $index">
    <div data-ng-repeat="group in supplier.Groups">
         {{something}}
    </div>
</div>

和型号:

$scope.order = {
    Suppliers: [
        {
            Groups: [{ id: 'sss'}, {id: 'ddd'}]
        },
        {
            Groups: [{ id: 'qqqq'}, {id: 'www'}, {id: 'xxx'}]
        },
        {
            Groups: [{ id: 'ooo'}]
        }
    ]
}

我需要显示全局组索引,因此输出应如下所示:

0 1个 2 3 4 5

我知道我可以在每个需要显示全局组索引的地方使用通过传递的组ID计算索引的函数,但是如何最优雅地实现此目标呢?

4 个答案:

答案 0 :(得分:0)

您可以使用{{$index}}在列表上显示组索引。

答案 1 :(得分:0)

您可以在控制器中合并这样的组。

 $scope.mergedGroups = [];
  for(var i=0;  i < $scope.order.Suppliers.length;  i++){
    for(var k=0;  k < $scope.order.Suppliers[i].Groups.length;  k++){
       $scope.mergedGroups.push($scope.order.Suppliers[i].Groups[k]);
    }
  }

然后您可以使用一个ng-repeat并完成它。

<div data-ng-repeat="group in mergedGroups" >
    {{group}} {{$index}}
</div>

答案 2 :(得分:0)

您的选择:

  1. $parent.$index
  2. 将供应商索引放入供应商对象
  3. 创建组件<supplier-info supplier="supplier" index="$index">

答案 3 :(得分:0)

如果仅在html中完成:

<div data-ng-init="$parent.index = 0" data-ng-repeat="supplier in order.Suppliers">
  <div data-ng-repeat="group in supplier.Groups">
    <span data-ng-init="index=$parent.$parent.index;$parent.$parent.index = $parent.$parent.index + 1;">
      {{index}}
    </span>
  </div>
</div>