angularJS - Repeating tr's in a table, but dynamically adding more rows while looping
既然例子总是能说明更多,那么这里的单词就是我想用另一种语言做的事情。
1 2 3 4 5 6 7 8 9 | <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> |
因此,这将循环一组项,并显示这些项的一些属性。如果有警告,将在显示警告的当前行下面添加一个新行。但是,在安古拉吉斯,我该怎么做呢?如果我在tr上放一个ng repeat,它将在tr的第一个结束标记处停止。我在一些其他线程上读到这不是很容易做到的,但是如何做到呢?是的,我真的很想用桌子。这是我用安古拉吉斯设计的例子,它显然没有像我希望的那样工作。有什么建议可以这样做吗?
带有tr ng repeat的jsbin示例
目前(1.0.7/1.1.5)您不能在ng repeat之外输出数据,但是1.2版(请参阅YouTube视频AngularJS 1.2及更高版本,17:30)将带来以下语法(适用于您的示例):
1 2 3 4 5 6 7 8 | <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> |
其思想是,无论什么在开始和结束之间,都将被重复,包括结束元素。
我能想到的一个解决方案是在同一个表中有多个
因此,对于您的问题,您可以进行以下设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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> |
重复表体的次数与表的条目相同,其中有两行-一行用于实际显示行条目,另一行用于有条件地显示。
你可以在
1 2 3 4 5 6 7 8 9 10 | <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> |
也不需要在