2016-04-12 8 views
0

Ich habe ein Objekt wieAngular ng-repeat Index des Objekts

{ 
     "2015": ["path",0, 0], 
     "2016": ["path",0, 0], 
     "2017": ["path",0, 0], 
     "2018": ["path",0, 0], 
    } 

Mit ng-repeat Ich versuche, wie unten die Informationen als Gitter angezeigt werden soll.

<div class = "row"> 
     <div class = "col-sm-4"></div> 
     <div class = "col-sm-4"></div> 
     <div class = "col-sm-4"></div> 
    </div> 

Ich habe den folgenden Code versucht

<div ng-repeat="(exam, data) in imageJSON"> 
     <div class="row grid-divider" ng-if="$index%3 == 0"> 
     <div class="col-sm-3">{{exam}} {{index}} 
     <div class="col-sm-3">{{exam}} {{index + 1}} 
     <div class="col-sm-3">{{exam}} {{index + 2}} 
     </div> 
    </div> 

ich will es wie angezeigt unter

table, 
 
th, 
 
td { 
 
    border: 1px solid black; 
 
}
<table> 
 
    <tr> 
 
    <td> 
 
     2014 
 
     <br>"path" 
 
    </td> 
 
    <td> 
 
     2015 
 
     <br>"path" 
 
    </td> 
 
    <td> 
 
     2016 
 
     <br>"path" 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     2017 
 
     <br>"path" 
 
    </td> 
 
    <td> 
 
     2018 
 
     <br>"path" 
 
    </td> 
 
    <td> 
 
     2019 
 
     <br>"path" 
 
    </td> 
 
    </tr> 
 
</table>
Wie wie Tisch, ich möchte, dass sie als Bootstrap-Raster angezeigt werden soll. Um das zu tun, möchte ich mit dem Index über das Objekt iterieren. Wie implementiert man eine solche Rasteransicht?

+0

zeigen, was Sie –

+0

Dank versucht haben, aktualisiert die Frage – AbiSivam

Antwort

0

für Objekt aktualisiert - Index mit $ Index Service von AngularJS wie unten erhältlich:

<div> 
    <div ng-repeat="(key, prop) in names track by key"> 
    <span>{{ $index + 1 }}</span> 
    <span>{{ key }}</span> 
    <span>{{names[key][0]}}</span> 
    </div> 
</div> 

Here is die aktualisierte zupfen:

hoffe, das hilft!

+0

Dies funktioniert bei Array. Aber mein Problem enthält ein Objekt, für das $ index nicht funktioniert. – AbiSivam

+0

Die obige Lösung für Objekte wurde aktualisiert. Ich hoffe, es funktioniert jetzt gut für Sie. –

+0

Danke :) Aber ich muss durch die (Schlüssel, Requisite) nicht die Namen [Schlüssel] iterieren. Die Frage wurde mit weiteren Details aktualisiert. Hoffe, dass Sie jetzt mein Problem kennen lernen können – AbiSivam

0

Wenn ich richtig verstehe, sollte diese Arbeit:

<div class="table"> 
    <div class="row" ng-repeat="(year, array) in object"> 
    <div class="col-sm-4 row-header">{{ year }}</div> 
    <div class="col-sm-4 row-items" ng-repeat="item in array">{{ item }}</div> 
    </div> 
</div> 

ODER

<div class="table"> 
    <div class="row" ng-repeat="(year, array) in object"> 
    <div class="col-sm-4 row-items" ng-repeat="item in array">{{ year }} {{ item }}</div> 
    </div> 
</div> 

je nachdem, was Sie meinen.


bearbeiten

Markup:

<table> 
    <tr ng-repeat="row in imageJSON"> 
    <td ng-repeat="item in row"> 
     {{ item.exam }} 
     <br>{{ item.data }} 
    </td> 
    </tr> 
</table> 

Eckig:

var CELLS_IN_ROW = 3; 
var imageJSON = { 
    "2015": ["path",0, 0], 
    "2016": ["path",0, 0], 
    "2017": ["path",0, 0], 
    "2018": ["path",0, 0] 
}; 

var array = []; 
var count = 0; 

angular.forEach(imageJSON, function (value, key) { 
    array[Math.floor(count/CELLS_IN_ROW)] = array[Math.floor(count/3)] || []; 
    array[Math.floor(count/CELLS_IN_ROW)].push({ 
    exam: key, 
    data: value[0] 
    }); 
    count++; 
}); 

$scope.imageJSON = array; 
+0

Danke. Aber ich muss durch den (Jahr, Array) als col-sm-4-Wert statt "Element in Array" durchlaufen. Ich habe die Frage mit weiteren Details aktualisiert. Ich hoffe, Sie können sich jetzt ein klares Bild von meinem Problem machen – AbiSivam