2014-12-31 3 views
1

У меня есть itemlist, который необходимо отобразить с серийным номером. Я использовал $ index с ng-repeat, но когда элемент скрыт, индекс был увеличен.

Код я попытался следующие:

<div ng-repeat="itemRow in salesitem" class="tableRow h7" ng-hide="itemRow.flagDeleted"> 
        <div class="tableCell">{{$index}}</div> 
        <div class="tableCell">{{itemRow.name}}</div> 
        <div class="tableCell">{{itemRow.qty}}</div> 
</div> 

когда itemRow.flagDeleted находится Правда в этом пункте не будет отображаться, но индекс будет увеличен так следующий пункт серийный номер будет неправильно.

+1

сделать фильтр детали перед переходом к нг-повторение как в 'нг-повтора =" itemRow в salesitem | фильтр: 'flagDeleted' : true "' – harishr

ответ

3

Вместо этого используйте фильтр на повторе:

<div ng-repeat="itemRow in salesitem | filter:{ 'flagDeleted' : false}" class="tableRow h7"> 
    <div class="tableCell">{{$index}}</div> 
    <div class="tableCell">{{itemRow.name}}</div> 
    <div class="tableCell">{{itemRow.qty}}</div> 
</div> 

http://plnkr.co/edit/VfFcbUJpoXG6mRkJSFYS?p=preview

+0

Он будет работать только в том случае, если объекты явно имеют флаг flagDeleted: false. Если у них только 'flagDeleted: true', то это не сработает (если' flagDeleted' 'undefined'). Лучше реализовать пользовательскую функцию фильтрации. – dfsq

+0

@dfsq Можете ли вы объяснить, что больше? Я не совсем понимаю, что вы говорите. Когда я устанавливаю все в true, ни один элемент не показывает, что является правильным поведением, потому что op хотел скрыть все элементы с flagDeleted как true. –

+0

Не может быть 'flagDeleted: false' only' flagDeleted: true'. В этом случае 'flagDeleted: false' не будет соответствовать им. Http://plnkr.co/edit/nO14yZrpRkuCCBsw8nCE?p=preview – dfsq

Смежные вопросы