在angularjs中以ng-repeat隐藏具有相同数据的html元素

时间:2016-03-25 19:21:20

标签: angularjs

我有一系列任务,其中有两个重复的部门,但我不想在ng-repeat中显示第二个重复记录,但仅针对我要显示的第一个记录,即使它是重复的。 这是我的代码,谁能告诉我哪里出错了。

<tr ng-repeat="t in item.requisitionTask track by t.id">
<td>
<div ng-hide="!$first ? item.requisitionTask[$index-1].department.departmentCode==$index.department.departmentCode : false">
{{t.department.departmentName}}</div>
</td>

2 个答案:

答案 0 :(得分:1)

如果上一项包含与当前项目相同的departmentCode,我怀疑您要隐藏数据。正如我的评论中所提到的,您应该将此逻辑移动到控制器范围内的函数中。

<tr ng-repeat="t in item.requisitionTask track by t.id">
  <td>
    <div ng-hide="isNotFirstOrSameCodeAsPrevious($index)">
        {{t.department.departmentName}}
    </div>
  </td>
</tr>

在您的控制器中:

function isNotFirstOrSameCodeAsPrevious($index) {
    if ($index === 0) return false;

    return item.requisitionTask[$index - 1].department.departmentCode ===
        item.requisitionTask[$index].department.departmentCode; 
}

答案 1 :(得分:0)

特别是通过定位数据来解决这个问题。

<td><div ng-hide="!$first ? item.requisitionTask[$index-1].department.departmentCode==item.requisitionTask[$index].department.departmentCode : false">