angularjs - 如何在没有 html 元素的情况下使用 ng-repeat

标签 angularjs

我需要使用ng-repeat (在 AngularJS 中)列出数组中的所有元素。

复杂之处在于数组的每个元素都将转换为表格的一行、两行或三行。

我无法创建有效的 html,如果 ng-repeat用于元素,因为 <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 使其绑定(bind)的 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>          

最佳答案

从 AngularJS 1.2 开始,有一个名为 ng-repeat-start 的指令可以完全满足您的要求。看我的回答in this question了解如何使用它的说明。

关于angularjs - 如何在没有 html 元素的情况下使用 ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11490968/

相关文章:

javascript - jQuery事件回调只运行一次(类似Angular的框架开发)

angularjs - 使用 Angular.js 从 Web 服务获取数据

angularjs - 如何处理 AngularJS 应用程序中的路径管理

javascript - 为什么我在执行 ng-include 后在 angularJS 中收到此错误?

angularjs - angular.bootstrap : How to catch initialization end event?

javascript - Angular Material - $mdDialog 自定义模板 - ng-click 指令中的函数?

AngularJS:与资源双向数据绑定(bind)的示例

javascript - Angular Controller 逻辑与 Vanilla JS 逻辑

javascript - 在没有 ng-if 的情况下从 ng-repeat 中排除嵌套数组中的元素

javascript - AngularJS - 使用 $resource 并与 RESTful 数据源交互