[javascript] 하위 ng-repeat에서 상위 ng-repeat의 액세스 색인

부모 목록 (foos)의 색인을 자식 목록 (foos.bars)의 함수 호출에 대한 인수로 사용하고 싶습니다.

누군가가 $ parent. $ index 사용을 권장하는 게시물을 찾았지만 $index의 속성이 아닙니다 $parent.

부모의 인덱스에 어떻게 액세스 할 수 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>



답변

내 예제 코드가 정확하고 문제는 실제 코드의 다른 문제였습니다. 아직도, 나는 이것의 예를 찾기가 어렵다는 것을 알고 있으므로 다른 사람이 찾고있는 경우에 대답하고 있습니다.

<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>


답변

ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat 에 따르면 키 또는 배열 색인을 선택한 변수에 저장할 수 있습니다.(indexVar, valueVar) in values

그래서 당신은 쓸 수 있습니다

<div ng-repeat="(fIndex, f) in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething(fIndex)">Add Something</a>
    </div>
  </div>
</div>

한 수준은 $ parent. $ index로 여전히 깨끗하지만 여러 부모는 문제가 발생할 수 있습니다.

참고 : $index각 범위에서 계속 정의되며로 대체되지 않습니다 fIndex.


답변

비슷한 질문에 대한 내 대답을 살펴보십시오 .
앨리어싱 $index을 통해 같은 미친 물건을 쓸 필요는 없습니다 $parent.$parent.$index.


ng-init$parent.$index 사용하는 보다 우아한 솔루션 :

<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


답변

다음 코드로 Grand Parent Index를 제어 할 수도 있습니다.

$parent.$parent.$index


답변

use $ parent. $ index을 사용하면됩니다. 여기서 parent는 부모 반복 객체의 객체를 나타냅니다.


답변

부모가 여러 명인 경우 $ parent가 작동하지 않습니다. 대신에 init에서 부모 인덱스 변수를 정의하고 사용할 수 있습니다

<div data-ng-init="parentIndex = $index" ng-repeat="f in foos">
  <div>
    <div data-ng-init="childIndex = $index" ng-repeat="b in foos.bars">
      <a ng-click="addSomething(parentIndex)">Add Something</a>
    </div>
  </div>
</div>


답변