Расширяющаяся строка таблицы: автоматически развернуть строку сведений, если набор результатов = 1?

0

У меня есть таблица с угловым 1,35, если пользователь нажимает значок слева от строки, он показывает строку "подробно" под строкой. Эта часть отлично работает:

  <tbody ng-repeat-start="p in tracking.packages | filter:tracking.search">
      <!-- <tr  ng-click="showDetails = !showDetails" ng-click="$event.originalEvent.dropdown" class="expander"> -->
      <tr class="expander">
        <td>
          <div class="row-arrow" ng-class="{'down-arrow' : showDetails}" ng-click="showDetails = !showDetails"></div>
        </td>
        <td>{{p.receivedDate | date: "MM/dd/yyyy &ndash; h:mma"}}</td>
        <td>{{p.carrier}}</td>
        <td>{{p.trackingNumber}}</td>
        <td>{{p.status}}</td>
        <td><span ng-if="p.status !== 'Attempted'"><span ng-if="tracking.currentStatus !== 'undelivered'">{{p.deliveredTo}}</span></span></td>
        <td>{{p.addressedTo}}</td>
      </tr>
      <tr class="row-details expanded" ng-show="showDetails" ng-class="{ 'active': showDetails }">
          <td>&nbsp;</td>
          <td colspan="7">
ETC....

Теперь у меня есть новое требование: если мы выйдем на эту страницу из поиска и получим набор результатов (из поля поиска) только одной строки, тогда мне нужно развернуть строку.

Поскольку строка показывает и скрывается через состояние переменной showDetails, я попытался добавить ng-init в значок:

<div class="row-arrow" ng-class="{'down-arrow' : showDetails}" ng-click="showDetails = !showDetails" ng-init="{showDetails : shown==1}"> </div>

Но, очевидно, я ошибаюсь.

Теги:
angularjs-ng-repeat

1 ответ

0
Лучший ответ

Вы можете использовать псевдоним фильтра в ng-repeat из Angular 1.3 (beta 17) и выше.

variable in expression as alias_expression - вы также можете предоставить необязательное выражение псевдонима, которое затем будет сохранять промежуточные результаты повторителя после применения фильтров. Обычно это используется для визуализации специального сообщения, когда фильтр активен на повторителе, но отфильтрованный набор результатов пуст.

Например: item in items | filter:x as results item in items | filter:x as results будут хранить фрагмент повторяющихся элементов в качестве результатов, но только после того, как элементы будут обработаны через фильтр.

в вашем случае вы можете использовать псевдоним ретранслятора, и если у псевдонима есть счет точно одного элемента, тогда вы можете переключить свою переменную расширения.

<tbody ng-repeat-start="p in tracking.packages | filter:tracking.search as searchResults">
    ....
    <div class="row-arrow" ng-class="{'down-arrow' : showDetails}" 
         ng-click="showDetails = !showDetails" 
         ng-init="showDetails = (searchResults.length == 1)"> </div>
  • 0
    Извините за форматирование, постинг с телефона; Я скоро обновлю.
  • 0
    Очевидно, я предпочитаю ретранслятор по самой причине границ, так как переключение любого из них является автономным. Есть ли способ сохранить это, но добавить к ng-show дополнительное условие, которое зависит от длины набора результатов?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню