У меня есть таблица с угловым 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 – 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> </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>
Но, очевидно, я ошибаюсь.
Вы можете использовать псевдоним фильтра в 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>