À l'aide de ng-repeat et limitTo de limiter le nombre d'éléments visibles affiche
J'essaie de limiter mes ensembles de résultats pour un nombre fixe. Je peux utiliser limitTo
avec ng-repeat
, mais cela limite les objets indépendamment de leur visibilité et supprime les éléments du DOM. Je veux limiter à un certain nombre d'éléments visibles tout en gardant tout dans les DOM.
Voici le code actuel que j'ai. Mon objectif est de toujours montrer pas plus de 50 articles dans la liste même si items
contient 500 articles.
<div ng-repeat="item in items | limitTo: 50">
<div ng-show="item.visible">
<p>item.id</p>
</div>
</div>
Ce sera d'abord la limite de 50 éléments, mais si je filtre la liste (par modification d'article.visible sur certains éléments), la liste n'affiche jamais les éléments dans l'ordre de 50 - 500 et affiche plutôt moins de 50 articles. Quel est le bon moyen de limiter un ng-repeat
de sorte qu'il ne prend en compte que les éléments visibles dans la limite de restriction?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser:
filter:{visible: true}
, vous obtiendrez une liste de tous les éléments visibles deVous pouvez prendre un coup d'oeil à la angularjs docu pour plus d'informations sur le filtre.
http://docs.angularjs.org/api/ng.filter:filter
track by
attribut dans ngRepeat. Vous pourriez fairetrack by item.id
, de sorte que Angulaire peut ne pas avoir à reconstruire toutes les nœuds dom, lorsque l'ordre change. Il pourrait accélérer un peu les choses.Il est également possible de faire de cette façon:
ng-if
est légèrement meilleure en ce qu'elle vidage des commentaires au lieu de html, mais il serait encore mieux d'utiliser seulement la limitTo afin de ne pas imprimer du contenu supplémentaire pour le documentIl ya un couple d'approches, peut-être le plus réutilisable est pour vous de créer votre propre "visibles" filtre personnalisé qui semble pour l'attribut visible sur vos articles. Ensuite, vous pouvez la chaîne d'eux.
Voici un lien pour créer des filtres personnalisés
Vous pouvez utiliser ng-si avec $index pour spécifier DOM l'affichage. Génère encore ng-si des commentaires, mais ne charge pas l'objet de tellement d'amélioration de la performance remarqué.