我在我的jsp中使用ng-repeat循环显示值。如果我的值大于列表中的一次,则只需要显示一次。
仅当循环中的当前值与使用ng- repeat的jsp中的先前值不同时,才显示该值
请找到我的代码:
<td>
// obj.vm is name. name should be displayed only if it is diferrent then the previous name. otherwise it should be blank
<div obj.vm> </div>
</td>
// obj.dm is value. all the values should be displayed
<td> <div obj.dm> </div>
</td>
</tr>
<tr ng-repeat="obj in selItem.surveyRefData">
<td nowrap> // need to display ob.vm only if the current value is not same as previous value
<div style="float: left;" class="form-actions" obj.vm">
</div>
</td>
<td>
<div style="float: left;" class="form-actions"
ng-bind-html="(!validSeriesIdReqPending ?(obj.dm | seriesText):'')">
</div>
<br/>
<br/>
<tr ng-repeat="obj in selItem.surveyRefData|unique: obj">
<td> // obj.vm is name. name should be displayed only if it is diferrent then the previous name. otherwise it should be blank
<div obj.vm>
</div> </td> // obj.dm is value. all the values should be displayed
<td>
<div obj.dm> </div>
</td>
</tr>
答案 0 :(得分:0)
理想的解决方案是预处理数据并按vm
属性将其分组,因此您将具有以下结构:
name1
value1
value2
value3
name2
value4
value5
name3
value5
...
这时,您将有一个嵌套的ng-repeat
,它会循环遍历每个名称中的值。如果由于某种原因而无法预处理数据,则可以使用ng-repeat
变量来引用$index
中的上一项。这是一个简单的示例:
<tr ng-repeat="obj in selItem.surveyRefData">
<td>{{obj.vm !== selItem.surveyRefData[$index-1].vm ? obj.vm : ''}}</td>
<td>{{obj.dm}}</td>
</tr>
请记住,这仅在根据vm
属性对数据进行排序时才有效...例如,如果您拥有name1 -> name1 -> name2 -> name1
,则在name1
中将出现两次您的输出表。