Angularjs:ng-repeat和ng-switch on tr标签

时间:2013-01-27 13:47:36

标签: javascript angularjs html-table ng-switch

我正在尝试使用AngularJS创建一个事件列表表。但是每个事件都有一个类型,不同类型的事件具有截然不同的内容,有些类型也会生成多个行。

在一个完美的世界里,我会这样做:

<tbody>
  <ng-repeat="event in events">
    <ng-switch on="event.type">
      <ng-switch-when="type1">
        <tr>
          ...
        </tr>
        <tr>
          ...
        </tr>
      </ng-switch-when>
      <ng-switch-when="type2">
        <tr>
          ...
        </tr>
      </ng-switch-when>
      ...
    </ng-switch>
  </ng-repeat>
</tbody>

但这不起作用,因为大多数浏览器会丢弃或重新定位ng标签,以强制tbody只包含trs。

我见过的与相关问题(How to use ng-repeat without an html element)的唯一解决方案是拥有多个tbody元素;我宁愿不这样做,但即使我这样做,给tbody ng-repeat和ng-switch属性,我仍然有一个问题,我不能在一个ng-switch中包装多个trs-when

有没有办法在AngularJS中执行此操作,或者这是不可能的?

2 个答案:

答案 0 :(得分:2)

我遇到过这个问题,最好的建议是不要使用表格:

只需使用* ammount的子div类进行父div,就像它们是tr和td一样......

我没有在角度来源中检查过这个,但我假设表格元素不是以某种方式交织在一起,谁知道..

答案 1 :(得分:1)

也许最好的选择是根据你的type1 / type2生成适当标记的指令?

您可能也可以使用ng-hide / ng-show进行此操作,但这会产生额外的不必要标记