Отображать значение, только если текущее значение в цикле не совпадает с предыдущим значением в jsp с помощью ng-repeat - PullRequest
0 голосов
/ 30 октября 2018

Я использую ng-repeat в jsp для зацикливания и отображения значений. Если у меня есть значение более одного раза в списке, мне нужно отобразить только один раз.

Отображать значение только в том случае, если текущее значение в цикле не совпадает с предыдущим значением в jsp с использованием ng-repeat

пожалуйста, найдите мой код:

           <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 голосов
/ 31 октября 2018

Идеальное решение - предварительно обработать данные и сгруппировать их по атрибуту 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...