Więc mam powtórzenie ng zagnieżdżone w innym powtórzeniu ng, aby zbudować menu nawigacyjne. Na każdym <li>
w wewnętrznej pętli powtórzenia ng ustawiam kliknięcie ng, które wywołuje odpowiedni kontroler dla tego elementu menu, przekazując indeks $, aby poinformować aplikację, której potrzebujemy. Jednak muszę również przekazać indeks $ z zewnętrznego ng-repeat, aby aplikacja wiedziała, w której sekcji się znajdujemy, a także w jakim tutorialu.
<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>
oto Plunker http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview
ng-click="loadFromMenu(section)"
. Przekazanie indeksu $ oznacza, że wykonasz pętlę, aby znaleźć niepotrzebny obiekt.Odpowiedzi:
Każde powtórzenie ng tworzy zakres potomny z przekazanymi danymi, a także dodaje dodatkową
$index
zmienną w tym zakresie.Musisz więc dotrzeć do zakresu nadrzędnego i użyć go
$index
.Zobacz http://plnkr.co/edit/FvVhirpoOF8TYnIVygE6?p=preview
źródło
ng-click="loadFromMenu($parent.$index, $index)"
loadFromMenu($parent.$parent.$index,$index)
aw niektórych potrzebujesz właśnieloadFromMenu($parent.$index,$index)
wtedy, użyciethis....
po prostu nie zadziała.O wiele bardziej eleganckie rozwiązanie niż
$parent.$index
użycieng-init
:Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
źródło
ng-init
zostało zademonstrowane wng-init
dokumentach bez żadnej wzmianki wng-repeat
dokumentach, więc napisałem tutaj + zmieniłem dokumenty w Github. Obecnang-repeat
składnia ma lepszy sposób na osiągnięcie tego, o czym świadczy @Okazari. Jest wolny od pewnych niedoskonałości wymienionych przez ciebie w komentarzach.Co powiesz na użycie tej składni (spójrz na ten fragmentator ). Właśnie to odkryłem i jest to całkiem niesamowite.
Przykład:
Dzięki tej składni możesz nadać własne imię
$index
i rozróżnić dwa indeksy.źródło
Aby pomóc komuś, kto się tu dostanie ... Nie powinieneś używać $ parent. $ Index, ponieważ nie jest to naprawdę bezpieczne. Jeśli dodasz ng-if wewnątrz pętli, dostaniesz błąd indeksu $!
Właściwy sposób
Sprawdź: plnkr.co/52oIhLfeXXI9ZAynTuAJ
źródło
Kiedy masz do czynienia z obiektami, chcesz zignorować proste identyfikatory tak samo, jak wygodne.
Jeśli zmienisz linię kliknięcia na to, myślę, że będziesz na dobrej drodze:
Myślę też, że możesz potrzebować zmiany
do czegoś takiego
Zobacz http://docs.angularjs.org/misc/faq i poszukaj klasy ng.
źródło
Po prostu użyj
ng-repeat="(sectionIndex, section) in sections"
i będzie to możliwe do użycia na następnym poziomie powtórzenia ng w dół.
źródło