Я пытаюсь перечислить вложенную структуру данных, сохраняя внутренний $index
в качестве рабочего индекса.
Чтобы проиллюстрировать, это то, чего я хочу достичь:
Category Name 1
1. Foo
2. Bar
3. Fez
Category Name 2
4. Qux
5. Baz
И вот результат, который я получаю сейчас:
Category Name 1
1. Foo
2. Bar
3. Fez
Category Name 2
1. Qux
2. Baz
Как видите, я бы хотел, чтобы индекс переносился между родительскими циклами. Простую проблему, которую необходимо решить в обычном программировании, но это оказывается довольно трудно сделать в самих циклах angularjs.
Вот версия в развернутом виде того, что в данный момент выполняется, пользовательское свойство number
вli
элемент, являющийся хитрым битом.
<div ng-repeat="(category, items) in groups">
<h2 class="category-name">{@ category @}</h2>
<ul class="items-list">
<li id="{@ item.id @}" my-widget ng-repeat="item in items" number="$index">
</li>
</ul>
</div>
Данные структурированы так (выкинутый код потребляет объекты):
{
'Category Name 1': [{id:1},{id:2}],
'Category Name 2': [{id:3},{id:4}]
}
Обратите внимание, что нет гарантиичто идентификаторы будут / должны быть последовательными.
Я пытался использовать переменную области и пытался увеличить ее в цикле, но она всегда отображается как последнее число:
// Controller.js
$scope.count = 0
// view.html
<li ... number="count + 1"></li> <!-- or count++ or any obvious variation -->
Или даже что-то такое уродливое, как:
... </li>
<p hidden>{@ increment() @}</p>
// Controller.js
$scope.increment = function(){$scope.count++;};
Кроме того, это просто заставляет AngularJS взрываться с сообщениями об ошибках, касающихся $apply
.
Я также пытался использовать ng-init
в родительском цикле для хранения индекса цикла, но я не понимаю, как его правильно использовать. Извиняюсь за то, что больше не показываю работу, но у меня проблемы с получением чего-либо кроме того, где я нахожусь ..
Что я могу сделать, чтобы перенести цикл?
Любая помощь будет в значительной степениоценили!