当前位置: 首页 > 知识库问答 >
问题:

AngularJS-在表中重复tr,但在循环时动态添加更多行

尚鸿才
2023-03-14

因为例子总是比单词更能说明问题,所以我想用另一种语言

<tr>
    <c:forEach items="${items}" var="item"> 
      <td>...</td>
      <td>...</td>
      <td>...</td>
      <c:if test="${item.showWarning}">
         </tr><tr><td colspan="3">${item.warning}</td>
      </c:if>
</tr>

所以这将循环遍历一组项目并显示这些项目的一些属性。如果有警告,将在显示警告的当前行下方添加一个新行。但是,我如何在angularJs中做到这一点?如果我在tr上放一个ng重复,它将在tr的第一个结束标记处停止。我在其他一些线程上读到这不是很容易做到的,但是如何做到呢?是的,我真的很想使用一个表。这是我用angularjs制作的示例,显然没有按照我希望的那样工作。有什么建议可以做到吗?

带有tr-ng-重复的JSBin示例

共有3个答案

严欣怡
2023-03-14

您可以在车身上重复

<tbody ng-repeat="item in items">
  <tr>
   <td>{{item.name}}</td>
   <td>{{item.description}}</td>
   <td>{{item.warning}}</td>
  </tr>
  <tr ng-show="item.warning">
    <td colspan="3">Warning !!!</td>
  </tr>
</tbody>

此外,您不需要将ng show表达式包装在{}中,您只需使用项即可。警告

邰建业
2023-03-14

我能想到的一种解决方案是在同一个表中有多个tbody标签。这里讨论了在同一个表中使用多个tbody标签。

因此,对于您的问题,您可以进行以下设置:

<table ng-controller="ItemController">
    <thead>
        <th>Name</th>
        <th>Description</th>
        <th>warning?</th>
    </thead>
    <tbody ng-repeat="item in items">
        <tr>
            <td>{{item.name}}</td>
            <td>{{item.description}}</td>
            <td>{{item.warning}}</td>
        </tr>
        <tr ng-show="item.warning">
            <td colspan="3" style="text-align: center">Warning !!!</td>
        </tr>
    </tbody>
</table>

如果表格中有条目,请重复多次表体,其中有两行—一行实际显示行条目,另一行有条件显示。

阳英朗
2023-03-14

目前(1.0.7/1.1.5)您无法在ng repeat之外输出数据,但1.2版(请参阅youtube视频AngularJS 1.2及17:30以后的版本)将引入以下语法(根据您的示例进行调整):

<tr ng-repeat-start="item in items">
  <td>...</td>
  <td>...</td>
  <td>...</td>
</tr>
<tr ng-repeat-end ng-show="item.showWarning">
  <td colspan="3">{{item.warning}}</td>
</tr>

这个想法是,在-start和-end之间的任何内容都将重复,包括-end元素。

 类似资料:
  • 我有一个任务来优化for循环,以便编译器编译运行更快的代码。目标是使代码在 5 秒或更短的时间内运行,原始运行时间约为 23 秒。原始代码如下所示: 我的第一个想法是在内部for循环上进行循环展开,使它降到5.7秒,循环看起来像这样: 在每个循环的阵列中将其取出12个点后,性能不再增加,所以我的下一个想法是尝试引入一些并行性,所以我做了这个: 这实际上最终减慢了代码的速度,并且每个附加变量再次减慢

  • 每秒钟我都会创建一个新的圆,并将其添加到名为“形状”的圆阵列列表中。我需要他们将其添加到MyPane,以便在javafx窗口中显示 然而我得到了这个错误。 线程“Timer-0”java中出现异常。lang.IllegalStateException:不在FX应用程序线程上;currentThread=Timer-0 我曾尝试使用其他计时方法,如ScheduledExecutorService,但

  • 问题内容: 我正在做的事情非常精简,可以解决问题。 我有一个简单的。每当您单击一个元素时,它都会添加另一个元素。但是,需要先对其进行编译才能正确呈现。 我的研究使我走向了。但是所有示例都使用了一个复杂的结构,我真的不知道如何在这里应用它。 小提琴在这里:http : //jsfiddle.net/paulocoelho/fBjbP/1/ JS在这里: Josh David Miller的解决方案:

  • 问题内容: 将html标记中的标准重构为侦听器,我的代码面临问题: 当单击元素时,假定单击的是循环中的最后一个索引,例如Lookslike,仅填充了此循环中的最后一个元素,循环初始化看起来正确,为什么会这样呢? 问题答案: 您需要将事件侦听器的分配包装在闭包中,例如:

  • 为了完成这项任务,我花了几周时间试图从其他建议中拼凑出一个完整的VBA,但现在我要向大家寻求答案。我试图从ws2中的a:K列中复制一个范围,该行以值c开头,该值与ws1中的值I匹配,该行以ws1中的值I开头。正在复制的条件是1和0。它基本上是一个美化的循环v形查找,粘贴动态范围。 我弄清楚了循环机制,现在我只需要帮助编写代码来复制选定的单元格。 这是我到目前为止所拥有的:

  • 我正在编写一个脚本,将文本文件读入一个数据框,该数据框可以包含各种列和行。然后,对数据进行一些操作,需要将所有数据汇总到一个数据框中,以输出到excel文档。 我的代码适用于单个文件,但现在我需要遍历所有文件。 这似乎应该很容易做到,但我已经尝试了我能找到的所有功能来实现这一点,但没有任何效果。 以下是基本结构: 输入/期望输出示例: 我尝试了追加、添加、合并、连接、合并,但没有一个有效。我只是使