Devo usare ng-repeat
(in AngularJS) per elencare tutti gli elementi in un array.
La complicazione è che ogni elemento dell'array si trasformerà in una, due o tre righe di una tabella.
Non riesco a creare un codice HTML valido, se ng-repeat
utilizzato su un elemento, poiché non è consentito alcun tipo di elemento ripetuto tra <tbody>
e <tr>
.
Ad esempio, se avessi usato ng-repeat su <span>
, avrei ottenuto:
<table>
<tbody>
<span>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
</span>
</tbody>
</table>
Che è html non valido.
Ma quello che devo generare è:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
dove la prima riga è stata generata dal primo elemento dell'array, i tre successivi dal secondo e il quinto e il sesto dall'ultimo elemento dell'array.
Come posso usare ng-repeat in modo tale che l'elemento html a cui è legato 'scompaia' durante il rendering?
O c'è un'altra soluzione a questo?
Chiarimento: la struttura generata dovrebbe apparire come di seguito. Ogni elemento dell'array può generare tra 1-3 righe della tabella. La risposta dovrebbe idealmente supportare 0-n righe per elemento dell'array.
<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
avrei ottenuto una riga per elemento dell'array, per quanto ho capito.
tr
s generati da un elemento array non hanno la stessa struttura.