web-dev-qa-db-fra.com

Angular JS cache le premier élément de ng-repeat

Comment cacher le premier élément d'une répétition ng?

<div ng-repeat="item in items" ng-hide="true">
    <div>{{ item.value }}</div>
</div>

Cela fonctionne en ce sens que tout le bloc ng-repeat est masqué, mais comment masquer uniquement le premier élément des éléments? Je veux l'afficher complètement différemment en utilisant un html/etc plus important, il est donc utile de l'avoir dans cette liste de données.

54
Nick Cooper

Tu peux le faire

<div ng-repeat="item in items" ng-show="!$first">
    <div>{{ item.value }}</div>
</div>

Voici les documents: http://docs.angularjs.org/api/ng.directive:ngRepeat

110
Xesued

Pas besoin de se cacher, utilisez simplement un filtre pour exclure le premier élément de la liste:

<div ng-repeat="item in items|filter:$index>0">
    <div>{{ item.value }}</div>
</div>
8
Oleg

Il existe une solution plus simple dans les versions plus récentes d'Angular.

Le filtre "limitTo" prend désormais en charge un argument "begin" ( docs ):

{{ limitTo_expression | limitTo : limit : begin}}

Vous pouvez donc l'utiliser comme ceci dans une répétition ng:

ng-repeat="item in items | limitTo: items.length : 1"

Cela signifie que ng-repeat commencera à l'index 1 (au lieu de l'index par défaut 0) et se poursuivra pendant le reste de la longueur du tableau des éléments (qui est inférieure à items.length, mais limitTo gérera cela très bien).

1
Rebecca

Dans le cas où vous devez sauter en dernier, utilisez ng-if = '! $ Last'.

0
KKProg