77 votes

Filtrer les résultats de 6 à 10 de 100 ng-repeat dans AngularJS

Je vois l' limitTo filtre dans les docs, ce qui me permet de limiter les 5 premiers, ou 5 derniers résultats, mais je veux le mettre où mon départ du délai afin que je puisse montrer à la deuxième série de 5 résultats.

Est-il intégré dans le filtre pour qui?

147voto

Brandon Tilley Points 49142

Il n'y a pas construit, mais l'écriture est assez simple. Voici un naïf mise en œuvre, basé sur Array#slice:

app.filter('slice', function() {
  return function(arr, start, end) {
    return (arr || []).slice(start, end);
  };
});
<div ng-repeat="item in items | slice:6:10">{{item}}</div>

Travail jsFiddle: http://jsfiddle.net/BinaryMuse/vQUsS/

133voto

bluescreen Points 887

AngularJS fournit cette fonctionnalité déjà hors de la boîte. Si vous lisez attentivement les limitTo la documentation, il vous permet de spécifier une valeur négative pour la limite. Cela signifie que de N éléments à la fin donc, si vous voulez traiter 5 résultats après un décalage de 5 vous devez effectuer les opérations suivantes:

<div ng-repeat="item in items | limitTo: 10 | limitTo: -5">{{item}}</div>

37voto

tjwallace Points 2133

J'ai commencé à jouer avec la clientèle filtres mais vous pouvez les appeler slice à l'intérieur de l' ng-repeat expression:

<div ng-repeat="item in items.slice(6, 10)">{{item}}</div>

4voto

Igdtl Points 11

Comme l'écran bleu dit, il peut être fait en utilisant uniquement l' limitTo filtre, bien qu'il traite avec la dernière page de problème remarqué par Harry Oosterveen a besoin de quelques travaux supplémentaires.

I. e. à l'aide de l'interface utilisateur-bootstrap pagination directive propriétés:

ng-model       = page  // current page
items-per-page = rpp   // records per page
total-items    = count // total number of records

L'expression doit être:

<div ng-repeat="item in items | limitTo: rpp * page | limitTo: rpp * page < count ? -rpp : rpp - (rpp * page - count)">{{item}}</div>

3voto

xmak Points 81

Voici une fonctionnelle exemple sur la façon de filtrer une liste avec décalage et la limite de:

<!doctype html>
<html lang="en" ng-app="phonecatApp">
<head>
    <script src="lib/angular/angular.js"></script>
    <script src="js/controllers.js"></script>
</head>

<body ng-controller="PhoneListCtrl">

Offset: <input type="text" ng-model="offset" value="0" /><br />
Limit: <input type="text" ng-model="limit" value="10" /><br />
<p>offset limitTo: {{offset - phones.length}}</p>

<p>Partial list:</p>
<ul>
    <li ng-repeat="phone in phones | limitTo: offset - phones.length | limitTo: limit">
        {{$index}} - {{phone.name}} - {{phone.snippet}}
    </li>
</ul>
<hr>
<p>Whole list:</p>
<ul>
    <li ng-repeat="phone in phones">
        {{$index}} - {{phone.name}} - {{phone.snippet}}
    </li>
</ul>   
</body>

</html>

L'exemple est basé sur la seconde étape de ce tutoriel AngularJS.

Notez que le filtre pour l'offset doit être mis comme le premier filtre, si vous voulez parcourir le générique de cas où la limite est uknnown.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X