2016-05-23 7 views
8

Ich habe zwei ng-repeat für divs Kind und Eltern alsAngularJS - Wie kommt man zwei Indizes

<div ng-repeat="stage in stages"> 
    <div ng-repeat="step in steps"> 
    <button ng-click="clickedStageAndStep($index)"> 
    </div> 
</div> 

$scope.clickedStageAndStep = function(index) { 
    console.log("Step Index: " + index) 
}; 

folgt möchte ich Kind und Eltern Indizes erhalten. Wie kann ich holen?

+1

den Index des übergeordneten So greifen Sie zwei Schritte gehen, indem er '$ parent $ parent $ index' hier ansehen: [ http://stackoverflow.com/questions/26875437/angularjs-access-to-first-of-ngrepeat-parent-in-a-nested-ngrepeat] –

+1

Mögliches Duplikat von [Übergabe von 2 $ Indexwerten innerhalb von verschachtelten ng-Wiederholungen] (http://stackoverflow.com/questions/15256600/passing-2-index-values-within-nested-ng-repeat) –

Antwort

8

Verwenden $parent.$index

Jeder ng-repeat hat seinen eigenen Anwendungsbereich und $index verweist Umfang von bis innersten ng-repeat

$scope.clickedStageAndStep = function(parent, child) { 
 
    console.log("Step Index: " + child); 
 
};
<div ng-repeat="stage in stages"> 
 
    <div ng-repeat="step in steps"> 
 
    <button ng-click="clickedStageAndStep($parent.$index,$index)"></button> 
 
    </div> 
 
</div>

Hinweis:</button> Tag nicht geschlossen ist.

2

Versuchen

<div ng-init="parentIndex = $index"> </div> 
+0

korrekt! aber es beantwortet die Frage einfach nicht und ich denke, Sie haben verpasst, was OP tut? – Jai

+0

yeah, ich gebe zu, ich vergaß op. Zu viel Kaffee drängt mich heute, diese Frage zu beantworten :) oben ist die Antwort besser – Janko

3

Verwenden $parent.$index

HTML:

<div ng-app="app" ng-controller="ctrl"> 
    <div ng-repeat="stage in stages"> 
    <div ng-repeat="step in stage.steps"> 
     <span>Index: {{$index}}. ParentIndex:{{$parent.$index}}</span> 
    </div> 
    </div> 
</div> 

JS:

angular.module('app', []). 
controller('ctrl', function($scope) { 
    $scope.stages = [{ 
    steps: ['1', '2', '3'] 
    }, { 
    steps: ['4', '5'] 
    }, 
    {steps:['6','7','8']}]; 
}) 

JSFIDDLE.

3

Verwenden Sie $ index und $ parent. $ Index, um Kind- und Elternindizes zu erhalten. ..

<div ng-repeat="stage in stages"> 
     <div ng-repeat="step in steps"> 
     <button ng-click="clickedStageAndStep($parent.$index,$index)"> 
     </div> 
    </div> 

    $scope.clickedStageAndStep = function(stageIndex,stepIndex) { 
     console.log("Stage Index: " + stageIndex + "And Step Index: " + stepIndex); 
    }; 
3

eine Variable definieren, die für übergeordnete Index

<div ng-repeat="stage in stages" ng-init="stageNumber = $index"> 
     <div ng-repeat="step in steps"> 
      <button ng-click="clickedStageAndStep($index, $parent.$index)" >YourButton </button> 
     </div> 
    </div> 

    $scope.clickedStageAndStep = function(stageIndex,stepIndex) { 
     console.log("Step Index: " + stepIndex + "And StageIndex: " + stageIndex) 
    };