Я хочу использовать индекс родительского списка (foos) в качестве аргумента для вызова функции в дочернем списке (foos.bars).
Я нашел сообщение, где кто-то рекомендует использовать $ parent. $ Index, но $index
не является свойством $parent
.
Как я могу получить доступ к индексу родителя ng-repeat
?
<div ng-repeat="f in foos">
<div>
<div ng-repeat="b in foos.bars">
<a ng-click="addSomething($parent.$index)">Add Something</a>
</div>
</div>
</div>
Ответы:
Мой пример кода был верным, и проблема была в другом коде. Тем не менее, я знаю, что было трудно найти примеры этого, поэтому я отвечаю на это, если кто-то еще ищет.
источник
ng-if
код, как я только что узнал.ng-if
требует и дополнительную$parent
ссылку. Избавил меня от головной боли.Согласно документам ng-repeat http://docs.angularjs.org/api/ng.directive:ngRepeat , вы можете хранить ключ или индекс массива в переменной по вашему выбору.
(indexVar, valueVar) in values
так что вы можете написать
Один уровень вверх все еще довольно чистый с $ parent. $ Index, но несколько родителей вверх, вещи могут запутаться.
Примечание: по-
$index
прежнему будет определяться в каждой области, оно не заменяется наfIndex
.источник
$parent.$index
один(fIndex, f)
метода, $ index все равно будет определен (не опущен) - так что индекс станет доступным как$index
иfIndex
.$index
не работает, но добавлениеfIndex
делает. Я не имею ни малейшего понятия о том, почему$index
не работает (это работает в других местах в моем коде), но после нескольких дней борьбы я перестал заботиться, когда нашел этот ответ. Это также немного более читабельно, когда у вас несколькоng-repeat
IMO.ng-repeat
итерация создает свою собственную область, которая также определяет свою собственную$index
, перезаписывая родительскую область$index
. Если вы добавите{{$index}}
правыйng-repeat
элемент выше или ниже самого внутреннего элемента, вы увидите значение родительского элемента, а если поместить его вng-repeat
элемент с самым внутренним значением, будет показано значение дочернего элемента. Использование подхода в этом ответе просто присваивает родительский индекс переменной, имя которой вы выбрали (fIndex
), чтобы она не перезаписывалась дочерней областью.Посмотрите на мой ответ на аналогичный вопрос .
Используя псевдонимы,
$index
мы не должны писать такие сумасшедшие вещи, как$parent.$parent.$index
.Более элегантное решение, чем
$parent.$index
использование ng-init :Плункер: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
источник
Вы также можете получить контроль над индексом прародителя с помощью следующего кода
источник
Вы можете просто использовать use $ parent. $ Index .where parent будет представлять объект родительского повторяющегося объекта.
источник
$ parent не работает, если есть несколько родителей. вместо этого мы можем определить родительскую переменную индекса в init и использовать ее
источник