2017-05-31 3 views
1

Ich möchte 3 Zeilen basierend auf der columnList erstellen, die 3 Arten von Werten enthält, z. B. caption, shortCaption und columnName.Ist es möglich, mehrere Zeilen basierend auf der Spaltenliste durch einzelne ng-repeat zu generieren?

[{ 
    caption : "First Name", 
    shortCaption: "FN", 
    columnName : "FIRST_NAME" 
},{ 
    caption : "Last Name", 
    shortCaption: "LN", 
    columnName : "LAST_NAME" 
} 
] 

Derzeit i Tabellenzelle am Erzeugen von column mit ng-Repeat innerhalb jeder Zeile laufen, hier i ng-repeat dreimal bin mit der Ursache Langsamkeit sein kann, ist es möglich, ng-repeat nur einmal zu einer Zeit, zu nutzen und erzeugen Alle drei Zeilen, ich habe auch versucht, ng-repeat-start und ng-repeat-end zu verwenden, aber die Ausgabe nicht erhalten.

<tr> 
<th ng-repeat="column in columnList"> 
    {{column.caption}} 
</th> 
</tr> 
<tr> 
<th ng-repeat="column in columnList"> 
    {{column.shortCaption}} 
</th> 
</tr> 
<tr> 
<th ng-repeat="column in columnList"> 
    {{column.columnName}} 
</th> 
</tr> 

http://plnkr.co/n0XKuwxOY8e1zjLfYwFI

+0

was meinst du damit, kann es Langsamkeit verursachen? Du könntest deine UI neu erstellen, indem du divs statt einer realen Tabelle benutzt, ich denke, das könnte funktionieren, um nur eine Wiederholung zu machen. – Icepickle

+0

ist es möglich, ohne divs zu generieren? –

+0

Können Sie die vollständige Generierung der Tabelle und den vollständigen (Beispiel-) Inhalt der Daten anzeigen, die Sie zu rendern versuchen? – Icepickle

Antwort

1

template.html

<tr ng-repeat="column in columnList"> 
    <td ng-repeat="key in getKeys()" ng-bind="::column[key]"></td> 
</tr> 

Controller.js

$scope.getKeys = function() { 
    return ['caption', 'shortCaption', 'columnName']; 
} 

Dies verwendet die ng-repeat zweimal. Wenn Sie sich über die Schlüssel der Objekte in Ihrer Spaltenliste sicher sind, können Sie die 2. ng-repeat eliminieren - aber die Leistungsverbesserung ist vernachlässigbar, es sei denn, Sie haben mehr als 500 Zeilen.

+0

aktualisiert Danke für Ihre Antwort, ich habe meine Antwort mit PLNKR Link meines Beispiels aktualisiert. Könntest du ein Beispiel mit deiner Lösung aktualisieren? –

+0

http://embed.plnkr.co/OK1T6nmoofis0p9PTPZI/ –

Verwandte Themen