Angularjs - вложенный глобальный индекс ng-repeat - PullRequest
0 голосов
/ 24 января 2019

У меня есть следующий шаблон:

<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

Я знаю, что могу использовать функцию, которая вычисляет индекс по переданному идентификатору группы в каждом месте, где нам нужно отобразить глобальный групповой индекс, но как достичь этой цели наиболее изящно?

Ответы [ 4 ]

0 голосов
/ 26 января 2019

Если сделано только в 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>
0 голосов
/ 24 января 2019

Вы можете объединять подобные группы в вашем контроллере.

 $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-повтор, и все готово.

<div data-ng-repeat="group in mergedGroups" >
    {{group}} {{$index}}
</div>
0 голосов
/ 24 января 2019

Ваши варианты:

  1. $parent.$index
  2. поместить индекс поставщика в объект поставщика
  3. создать компонент <supplier-info supplier="supplier" index="$index">
0 голосов
/ 24 января 2019

Вы можете использовать {{$index}} для отображения индекса группы в вашем списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...