Saya ingin menggunakan indeks daftar induk (foos) sebagai argumen untuk panggilan fungsi dalam daftar anak (foos.bars).
Saya menemukan posting di mana seseorang merekomendasikan menggunakan $ parent. $ Index, tetapi $index
bukan properti dari $parent
.
Bagaimana saya bisa mengakses indeks induk 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>
Jawaban:
Contoh kode saya sudah benar dan masalahnya ada pada kode saya yang sebenarnya. Namun, saya tahu sulit untuk menemukan contoh-contoh ini sehingga saya menjawabnya kalau-kalau ada orang lain yang melihatnya.
sumber
ng-if
kode seperti yang baru saya ketahui .ng-if
diperlukan dan$parent
referensi tambahan . Menyelamatkan saya sakit kepala.Menurut ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat , Anda dapat menyimpan indeks kunci atau array dalam variabel pilihan Anda.
(indexVar, valueVar) in values
jadi kamu bisa menulis
Satu level naik masih cukup bersih dengan $ parent. $ Index tetapi beberapa orangtua naik, keadaan bisa menjadi berantakan.
Catatan:
$index
akan terus ditentukan pada setiap lingkup, itu tidak diganti olehfIndex
.sumber
$parent.$index
satu(fIndex, f)
metode ini , $ index akan tetap didefinisikan (tidak dihilangkan) - sehingga indeks menjadi dapat diakses karena keduanya$index
danfIndex
.$index
tidak berfungsi, tetapi menambahkanfIndex
tidak. Saya tidak memiliki petunjuk sama sekali mengapa$index
tidak bekerja (itu terjadi di tempat lain dalam kode saya), tetapi setelah berjuang selama beberapa hari saya berhenti peduli ketika saya menemukan jawaban ini. Ini juga sedikit lebih mudah dibaca ketika Anda memiliki beberapang-repeat
IMO.ng-repeat
iterasi membuat cakupannya sendiri, yang juga menentukan sendiri$index
, menimpa milik orang tua$index
. Jika Anda memasukkan{{$index}}
tepat di atas atau di bawahng-repeat
elemen terdalam , Anda akan melihat nilai orangtua, dan memasukkannya ke dalamng-repeat
elemen terdalam akan menunjukkan kepada Anda anak. Menggunakan pendekatan dalam jawaban ini hanya memberikan indeks induk ke variabel yang namanya telah Anda pilih (fIndex
) sehingga tidak akan ditimpa oleh lingkup anak.Lihatlah jawaban saya untuk pertanyaan serupa .
Dengan alias
$index
kita tidak perlu menulis hal-hal gila seperti$parent.$parent.$index
.Cara solusi yang lebih elegan saat
$parent.$index
menggunakan ng-init :Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
sumber
Anda juga bisa mendapatkan kendali atas indeks grand parent dengan kode berikut
sumber
Anda cukup menggunakan $ parent. $ Index .di mana parent akan merepresentasikan objek dari parent repeate object.
sumber
$ parent tidak berfungsi jika ada banyak orangtua. alih-alih itu kita dapat mendefinisikan variabel indeks induk di init dan menggunakannya
sumber