Jadi saya punya ng-repeat yang bersarang di ng-repeat lain untuk membangun menu nav. Pada masing-masing <li>
di loop berulang ng-dalam saya menetapkan ng-klik yang memanggil controller yang relevan untuk item menu dengan melewati indeks $ untuk membiarkan aplikasi tahu mana yang kita butuhkan. Namun saya juga harus lulus dalam indeks $ dari luar ng-repeat sehingga aplikasi tahu bagian mana kita dan tutorial yang mana.
<ul ng-repeat="section in sections">
<li class="section_title {{section.active}}" >
{{section.name}}
</li>
<ul>
<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu($index)" ng-repeat="tutorial in section.tutorials">
{{tutorial.name}}
</li>
</ul>
</ul>
inilah Plunker http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview
ng-click="loadFromMenu(section)"
. Melewati $ index berarti Anda akan melakukan loop untuk menemukan objek yang tidak perlu.Jawaban:
Setiap ng-repeat membuat lingkup anak dengan data yang dikirimkan, dan juga menambahkan
$index
variabel tambahan dalam lingkup itu.Jadi yang perlu Anda lakukan adalah menjangkau hingga lingkup induk, dan menggunakannya
$index
.Lihat http://plnkr.co/edit/FvVhirpoOF8TYnIVygE6?p=preview
sumber
ng-click="loadFromMenu($parent.$index, $index)"
loadFromMenu($parent.$parent.$index,$index)
dan dalam beberapa Anda hanya perluloadFromMenu($parent.$index,$index)
menggunakan tidakthis....
akan bekerja.Solusi yang jauh lebih elegan daripada
$parent.$index
menggunakanng-init
:Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
sumber
ng-init
ini ditunjukkan dalamng-init
dokumen tanpa menyebutkanng-repeat
dokumen, jadi saya menulis di sini + mengubah dokumen di Github.ng-repeat
Sintaksis saat ini memiliki cara yang lebih baik untuk mencapai hal ini, yang ditunjukkan oleh @Okazari. Ini bebas dari beberapa ketidaksempurnaan yang disebutkan oleh Anda dalam komentar.Bagaimana dengan menggunakan sintaks ini (lihat di plunker ini ). Saya baru saja menemukan ini dan itu sangat mengagumkan.
Contoh:
Dengan sintaks ini Anda dapat memberikan nama Anda sendiri
$index
dan membedakan dua indeks.sumber
Hanya untuk membantu seseorang yang datang ke sini ... Anda tidak boleh menggunakan $ parent. $ Index karena itu tidak benar-benar aman. Jika Anda menambahkan ng-jika di dalam loop, Anda mendapatkan $ index berantakan!
Cara yang benar
Periksa: plnkr.co/52oIhLfeXXI9ZAynTuAJ
sumber
Ketika Anda berhadapan dengan objek, Anda ingin mengabaikan id sederhana sebanyak yang nyaman.
Jika Anda mengubah baris klik ke ini, saya pikir Anda akan berada di jalan:
Juga, saya pikir Anda mungkin perlu berubah
untuk sesuatu seperti
Lihat http://docs.angularjs.org/misc/faq dan cari ng-class.
sumber
Gunakan saja
ng-repeat="(sectionIndex, section) in sections"
dan itu akan bisa digunakan pada level selanjutnya ng-repeat down.
sumber