有条件地在ng-repeat块中添加元素

iLe*_*ing 14 angularjs

是否可以根据条件向标记添加内容?就像在这个例子中,当我想td只添加第一次迭代时(仅针对第一个元素myData)?

<tr ng-repeat="m in myData">
   <td>{{m.Name}}</td>
   <td>{{m.LastName}}</td>

   @if myData.indexOf(m) = 0 then // something like that
   <td rowspan ="{{m.length}}">
      <ul>
        <li ng-repeat="d in days">
           {{d.hours}}
        </li>
      </ul>
   </td> 
</tr>
Run Code Online (Sandbox Code Playgroud)

pko*_*rce 16

是的,AngularJS有2个指令用于此场合:

  • NG-显示 /NG隐藏指令的家族可用于隐藏(通过使用显示CSS规则)的基础上计算表达式的结果,DOM三个部分.
  • 如果我们想有条件地物理删除/添加DOM的一部分,那么ng-switch指令系列(ng-switch,ng-switch-when,ng-switch-default)将会派上用场.

在一天结束时,两个解决方案将提供相同的视觉效果,但底层DOM结构将是不同的.对于简单的用例,ng-show/ng-hide可能没问题,但DOM的较大部分应该用ng-switch处理.

对于这个问题的用例,我建议使用ng-switch.

  • 从Angular 1.1.5开始,你也可以使用`ng-if ="你的表达式"`指令.您将其作为属性添加到任何元素.如果验证为true,则将该元素添加到dom中. (4认同)