Ich muss ng-repeat
(in AngularJS) verwenden, um alle Elemente in einem Array aufzulisten.
Die Komplikation besteht darin, dass jedes Element des Arrays in eine, zwei oder drei Zeilen einer Tabelle umgewandelt wird.
Ich kann kein gültiges HTML erstellen, wenn ng-repeat
es für ein Element verwendet wird, da zwischen <tbody>
und kein Typ eines sich wiederholenden Elements zulässig ist <tr>
.
Wenn ich zum Beispiel ng-repeat on verwenden <span>
würde, würde ich Folgendes erhalten:
<table>
<tbody>
<span>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
</span>
</tbody>
</table>
Welches ist ungültig HTML.
Aber was ich generiert werden muss, ist:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
Dabei wurde die erste Zeile vom ersten Array-Element generiert, die nächsten drei vom zweiten und die fünfte und sechste vom letzten Array-Element.
Wie kann ich ng-repeat so verwenden, dass das HTML-Element, an das es gebunden ist, beim Rendern "verschwindet"?
Oder gibt es dafür eine andere Lösung?
Klarstellung: Die generierte Struktur sollte wie folgt aussehen. Jedes Array-Element kann zwischen 1-3 Zeilen der Tabelle generieren. Die Antwort sollte idealerweise 0-n Zeilen pro Array-Element unterstützen.
<table>
<tbody>
<!-- array element 0 -->
<tr>
<td>One row item</td>
</tr>
<!-- array element 1 -->
<tr>
<td>Three row item</td>
</tr>
<tr>
<td>Some product details</td>
</tr>
<tr>
<td>Customer ratings</td>
</tr>
<!-- array element 2 -->
<tr>
<td>Two row item</td>
</tr>
<tr>
<td>Full description</td>
</tr>
</tbody>
</table>
tr
würde, würde ich, soweit ich weiß, eine Zeile pro Array-Element erhalten.
tr
s, die von einem Array-Element erzeugt werden, haben nicht die gleiche Struktur.