Kode HTML saya
<div> <ul> <li ng-repeat='parentItem in arr1'> <div ng-repeat='childItem di arr2'> {{ $parent.$index }} , {{ $index }} </div> </li> </ul> </div>
Kode Javascript di dalam pengontrol
$lingkup.arr1 = [1,2]; $lingkup.arr2 = [1,2];
Kode ini memberi saya jawaban yang benar
0, 0 0, 1 1, 0, 1, 1
Tetapi jika saya menggunakan ng-if="true"
di loop anak maka itu memberi saya jawaban yang salah
<div> <ul> <li ng-repeat='parentItem in arr1'> <div ng-repeat='childItem in arr2' ng-if="true"> {{ $induk.$indeks }} , {{ $indeks }} </div> </li> </ul> </div>
0, 0 1, 1 0, 0 1, 1
Ini salah. Itu mengubah indeks induk menjadi indeks anak
Tolong perbaiki masalah ini
Ini bukan masalah di Angular. Ini terjadi ( seperti yang didokumentasikan ), karena ngIf
membuat lingkup baru, jadi $parent
tidak merujuk ke lingkup luar ngRepeat
.
Itulah mengapa menggunakan $parent
bukanlah praktik yang baik di sini. Anda bisa/harus menggunakan ngInit
untuk membuat alias dari indeks induk, seperti ini:
<li ng-repeat="parentItem in arr1" ng-init="parentIdx = $index">
<div ng-repeat="childItem in arr2" ng-if="true">
{{ parentIdx }} , {{ $index }}
</div>
</li>
BTW, ini adalah pertanyaan dukungan umum. Pertanyaan seperti itu sebaiknya diarahkan ke saluran yang tepat .
Masalah GitHub dicadangkan untuk laporan bug dan permintaan fitur.
Terima kasih,
Saya bisa menggunakan ini dengan ng-init
Komentar yang paling membantu
Ini bukan masalah di Angular. Ini terjadi ( seperti yang didokumentasikan ), karena
ngIf
membuat lingkup baru, jadi$parent
tidak merujuk ke lingkup luarngRepeat
.Itulah mengapa menggunakan
$parent
bukanlah praktik yang baik di sini. Anda bisa/harus menggunakanngInit
untuk membuat alias dari indeks induk, seperti ini:Demo