J'ai besoin d'utiliser ng-repeat
(dans AngularJS) pour lister tous les éléments d'un tableau.
La complication est que chaque élément du tableau se transforme en une, deux ou trois lignes d'une table.
Je ne peux pas créer de code HTML valide, si ng-repeat
est utilisé sur un élément, car aucun type d'élément répétitif n'est autorisé entre <tbody>
et <tr>
.
Par exemple, si j'utilisais ng-repeat sur <span>
, j'obtiendrais:
<table>
<tbody>
<span>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
</span>
</tbody>
</table>
Ce qui est du HTML invalide.
Mais ce dont j'ai besoin pour être généré, c'est:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
où la première ligne a été générée par le premier élément du tableau, les trois suivants par le deuxième et le cinquième et le sixième par le dernier élément du tableau.
Comment puis-je utiliser ng-repeat de telle sorte que l'élément html auquel il est lié «disparaisse» lors du rendu?
Ou y a-t-il une autre solution à cela?
Clarification: la structure générée doit ressembler à celle ci-dessous. Chaque élément du tableau peut générer entre 1 et 3 lignes du tableau. La réponse devrait idéalement prendre en charge 0-n lignes par élément de tableau.
<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
, j'obtiendrais une ligne par élément de tableau, pour autant que je sache.
tr
s qui sont générés par un élément du tableau n'ont pas la même structure.