중첩 된 ng-repeat 내에서 2 개의 $ index 값 전달
탐색 메뉴를 작성하기 위해 다른 ng-repeat 내에 ng-repeat가 중첩되어 있습니다. <li>
내부 ng-repeat 루프에서 각각 ng-click을 설정하여 $ index를 전달하여 해당 메뉴 항목의 관련 컨트롤러를 호출하여 앱에 필요한 것을 알려줍니다. 그러나 외부 ng-repeat에서 $ index를 전달해야 응용 프로그램이 우리가 어느 섹션에 있는지, 어떤 자습서를 알 수 있습니다.
<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>
여기에 플런 커가 있습니다 http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview
각 ng-repeat는 전달 된 데이터로 하위 범위를 작성하고 $index
해당 범위에 추가 변수를 추가 합니다.
따라서 부모 범위까지 도달하여 사용하십시오 $index
.
http://plnkr.co/edit/FvVhirpoOF8TYnIVygE6?p=preview를 참조 하십시오
<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu($parent.$index)" ng-repeat="tutorial in section.tutorials">
{{tutorial.name}}
</li>
$parent.$index
사용하는 것보다 더 우아한 솔루션 ng-init
:
<ul ng-repeat="section in sections" ng-init="sectionIndex = $index">
<li class="section_title {{section.active}}" >
{{section.name}}
</li>
<ul>
<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(sectionIndex)" ng-repeat="tutorial in section.tutorials">
{{tutorial.name}}
</li>
</ul>
</ul>
플 런커 : http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
이 구문을 사용하는 것은 어떻습니까 ( 이 plunker 살펴 보십시오 ). 방금 이것을 발견했고 꽤 굉장합니다.
ng-repeat="(key,value) in data"
예:
<div ng-repeat="(indexX,object) in data">
<div ng-repeat="(indexY,value) in object">
{{indexX}} - {{indexY}} - {{value}}
</div>
</div>
이 구문을 사용 $index
하면 두 개의 색인에 고유 한 이름을 지정 하고 구별 할 수 있습니다 .
여기에 오는 누군가를 돕기 위해 ... $ parent. $ index는 안전하지 않기 때문에 사용해서는 안됩니다. 루프 안에 ng-if를 추가하면 $ index가 엉망이됩니다!
올바른 방법
<table>
<tr ng-repeat="row in rows track by $index" ng-init="rowIndex = $index">
<td ng-repeat="column in columns track by $index" ng-init="columnIndex = $index">
<b ng-if="rowIndex == columnIndex">[{{rowIndex}} - {{columnIndex}}]</b>
<small ng-if="rowIndex != columnIndex">[{{rowIndex}} - {{columnIndex}}]</small>
</td>
</tr>
</table>
확인 : plnkr.co/52oIhLfeXXI9ZAynTuAJ
객체를 다룰 때, 간단한 id를 편리하게 무시하고 싶을 것이다.
클릭 라인을 다음과 같이 변경하면 나아갈 것입니다.
<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(tutorial)" ng-repeat="tutorial in section.tutorials">
또한 변경해야 할 수도 있습니다.
class="tutorial_title {{tutorial.active}}"
같은 것에
ng-class="tutorial_title {{tutorial.active}}"
참조 http://docs.angularjs.org/misc/faq을 하고 겨 클래스를 찾습니다.
그냥 사용 ng-repeat="(sectionIndex, section) in sections"
그리고 그것은 다음 단계 ng-repeat down에서 사용할 수 있습니다.
<ul ng-repeat="(sectionIndex, section) in sections">
<li class="section_title {{section.active}}" >
{{section.name}}
</li>
<ul>
<li ng-repeat="tutorial in section.tutorials">
{{tutorial.name}}, Your section index is {{sectionIndex}}
</li>
</ul>
</ul>
참고 URL : https://stackoverflow.com/questions/15256600/passing-2-index-values-within-nested-ng-repeat
'IT' 카테고리의 다른 글
브라우저 / 탭이 활성화되어 있는지 확인하는 방법 (0) | 2020.03.08 |
---|---|
요소가 DOM에 보이는지 확인 (0) | 2020.03.08 |
소스 코드의 res / values / dimension.xml에서 차원 값로드 (0) | 2020.03.08 |
하이픈 뒤에 줄 바꿈 없음 (0) | 2020.03.08 |
짧은 Git 버전 해시 받기 (0) | 2020.03.08 |