仅当循环中的当前值与使用ng- repeat的jsp中的先前值不同时,才显示该值

时间:2018-10-30 18:42:07

标签: angularjs

我在我的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>

1 个答案:

答案 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中将出现两次您的输出表。

这是一个简单的例子:https://plnkr.co/edit/r5yxYk4Rr7mXaBeqoJNs