J'essaye d'ajouter des pages à ma liste. J'ai suivi le tutoriel AngularJS, celui sur les smartphones et j'essaye de n'afficher qu'un certain nombre d'objets. Voici mon fichier html:
<div class='container-fluid'>
<div class='row-fluid'>
<div class='span2'>
Search: <input ng-model='searchBar'>
Sort by:
<select ng-model='orderProp'>
<option value='name'>Alphabetical</option>
<option value='age'>Newest</option>
</select>
You selected the phones to be ordered by: {{orderProp}}
</div>
<div class='span10'>
<select ng-model='limit'>
<option value='5'>Show 5 per page</option>
<option value='10'>Show 10 per page</option>
<option value='15'>Show 15 per page</option>
<option value='20'>Show 20 per page</option>
</select>
<ul class='phones'>
<li class='thumbnail' ng-repeat='phone in phones | filter:searchBar | orderBy:orderProp | limitTo:limit'>
<a href='#/phones/{{phone.id}}' class='thumb'><img ng-src='{{phone.imageUrl}}'></a>
<a href='#/phones/{{phone.id}}'>{{phone.name}}</a>
<p>{{phone.snippet}}</p>
</li>
</ul>
</div>
</div>
</div>
J'ai ajouté une balise de sélection avec certaines valeurs afin de limiter le nombre d'éléments qui seront affichés. Ce que je veux maintenant, c'est ajouter la pagination pour afficher les 5, 10, etc.
J'ai un contrôleur qui fonctionne avec ceci:
function PhoneListCtrl($scope, Phone){
$scope.phones = Phone.query();
$scope.orderProp = 'age';
$scope.limit = 5;
}
Et aussi j'ai un module pour récupérer les données des fichiers json.
angular.module('phonecatServices', ['ngResource']).
factory('Phone', function($resource){
return $resource('phones/:phoneId.json', {}, {
query: {method: 'GET', params:{phoneId:'phones'}, isArray:true}
});
});
javascript
angularjs
paginate
Tomarto
la source
la source
Réponses:
Si vous n'avez pas trop de données, vous pouvez certainement faire la pagination en stockant simplement toutes les données dans le navigateur et en filtrant ce qui est visible à un certain moment.
Voici un exemple de pagination simple: http://jsfiddle.net/2ZzZB/56/
Cet exemple était sur la liste des violons sur le wiki angular.js github, ce qui devrait être utile: https://github.com/angular/angular.js/wiki/JsFiddle-Examples
EDIT: http://jsfiddle.net/2ZzZB/16/ à http://jsfiddle.net/2ZzZB/56/ (n'affichera pas "1 / 4.5" s'il y a 45 résultats)
la source
if (input?)
condition avant retourinput.slice(start)
, merci Andy!Je viens de créer un JSFiddle qui montre la pagination + la recherche + l'ordre par sur chaque colonne en utilisant Build with Twitter Bootstrap code: http://jsfiddle.net/SAWsA/11/
la source
J'ai construit un module qui rend la pagination en mémoire incroyablement simple.
Il vous permet de paginer simplement en remplaçant
ng-repeat
pardir-paginate
, en spécifiant les éléments par page comme un filtre canalisé, puis en déposant les contrôles où vous le souhaitez sous la forme d'une seule directive,<dir-pagination-controls>
Pour prendre l'exemple original demandé par Tomarto, cela ressemblerait à ceci:
Il n'y a pas besoin de code de pagination spécial dans votre contrôleur. Tout est géré en interne par le module.
Démo: http://plnkr.co/edit/Wtkv71LIqUR4OhzhgpqL?p=preview
Source: dirPagination de GitHub
la source
Je sais que ce fil est vieux maintenant, mais j'y réponds pour garder les choses un peu à jour.
Avec Angular 1.4 et au-dessus, vous pouvez directement utiliser limitTo filter qui, en plus d'accepter le
limit
paramètre, accepte également unbegin
paramètre.Usage:
{{ limitTo_expression | limitTo : limit : begin}}
Alors maintenant, vous n'aurez peut-être pas besoin d'utiliser une bibliothèque tierce pour réaliser quelque chose comme la pagination. J'ai créé un violon pour illustrer la même chose.
la source
Consultez cette directive: https://github.com/samu/angular-table
Il automatise beaucoup le tri et la pagination et vous donne suffisamment de liberté pour personnaliser votre tableau / liste comme vous le souhaitez.
la source
$index
et mon tableau ne contient pas de valeurs incrémentielles<td at-sortable at-attribute="index">{{sortedAndPaginatedList.indexOf(item) + 1}}</td>
mais je ne sais pas si c'est la bonne voieVoici un code de démonstration où il y a pagination + Filtrage avec AngularJS:
https://codepen.io/lamjaguar/pen/yOrVym
JS:
HTML:
la source