Necesito usar ng-repeat
(en AngularJS) para enumerar todos los elementos en una matriz.
La complicación es que cada elemento de la matriz se transformará en una, dos o tres filas de una tabla.
No puedo crear html válido, si ng-repeat
se usa en un elemento, ya que no se permite ningún tipo de elemento repetitivo entre <tbody>
y <tr>
.
Por ejemplo, si usara ng-repeat on <span>
, obtendría:
<table>
<tbody>
<span>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
</span>
</tbody>
</table>
Que no es válido html.
Pero lo que necesito ser generado es:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
donde la primera fila ha sido generada por el primer elemento de la matriz, las siguientes tres por el segundo y la quinta y sexta por el último elemento de la matriz.
¿Cómo puedo usar ng-repeat de tal manera que el elemento html al que está vinculado 'desaparezca' durante el renderizado?
¿O hay otra solución para esto?
Aclaración: La estructura generada debería verse como a continuación. Cada elemento de la matriz puede generar entre 1-3 filas de la tabla. La respuesta idealmente debería admitir 0-n filas por elemento de matriz.
<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
, obtendría una fila por elemento de matriz, por lo que entiendo.tr
s que son generados por un elemento de matriz no tienen la misma estructura.