【发布时间】:2012-07-14 12:19:05
【问题描述】:
我需要使用ng-repeat(在 AngularJS 中)列出数组中的所有元素。
复杂之处在于数组的每个元素都将转换为表格的一、二或三行。
如果在元素上使用ng-repeat,我无法创建有效的html,因为在<tbody> 和<tr> 之间不允许重复元素的类型。
例如,如果我在 <span> 上使用 ng-repeat,我会得到:
<table>
<tbody>
<span>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</span>
<span>
<tr>...</tr>
<tr>...</tr>
</span>
</tbody>
</table>
这是无效的html。
但是我需要生成的是:
<table>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
其中第一行由第一个数组元素生成,接下来的三行由第二个数组元素生成,第五和第六个由最后一个数组元素生成。
如何使用 ng-repeat 以使其绑定的 html 元素在渲染期间“消失”?
或者有其他解决方案吗?
澄清:生成的结构应如下所示。每个数组元素可以生成 1-3 行的表格。理想情况下,答案应该支持每个数组元素 0-n 行。
<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>
【问题讨论】:
-
也许你应该使用“replace: true”?看到这个:stackoverflow.com/questions/11426114/…
-
另外,为什么不能在 tr 本身上使用 ng-repeat?
-
@Tommy,因为“数组的每个元素都将转换为表格的一、二或三行”。据我所知,如果我在
tr上使用 ng-repeat,我会得到每个数组元素一行。 -
好的,我明白了。在中继器中使用之前,您不能先将模型展平吗?
-
@Tommy,不。一个数组元素生成的1-3个
trs结构不同。
标签: angularjs