Je trouve les didacticiels AngularJS difficiles à comprendre; celui-ci me guide à travers la création d'une application qui affiche les téléphones. Je suis à l' étape 5 et j'ai pensé à titre expérimental que j'essaierais de permettre aux utilisateurs de spécifier combien ils aimeraient voir apparaître. La vue ressemble à ceci:
<body ng-controller="PhoneListCtrl">
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
<!--Sidebar content-->
Search: <input ng-model="query">
How Many: <input ng-model="quantity">
Sort by:
<select ng-model="orderProp">
<option value="name">Alphabetical</option>
<option value="age">Newest</option>
</select>
</div>
<div class="span10">
<!--Body content-->
<ul class="phones">
<li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
{{phone.name}}
<p>{{phone.snippet}}</p>
</li>
</ul>
</div>
</div>
</div>
</body>
J'ai ajouté cette ligne où les utilisateurs peuvent entrer le nombre de résultats qu'ils souhaitent afficher:
How Many: <input ng-model="quantity">
Voici mon contrôleur:
function PhoneListCtrl($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data.splice(0, 'quantity');
});
$scope.orderProp = 'age';
$scope.quantity = 5;
}
La ligne importante est:
$scope.phones = data.splice(0, 'quantity');
Je peux coder en dur un nombre pour représenter le nombre de téléphones à afficher. Si je mets 5
, 5 seront affichés. Tout ce que je veux faire, c'est lire le numéro de cette entrée dans la vue et le mettre dans la data.splice
ligne. J'ai essayé avec et sans guillemets, et aucun travail. Comment puis-je faire cela?
la source
limitTo
mais fournir un bouton "charger plus" pour augmenter la limite. Cela ne devrait être affiché que si plus d'enregistrements sont disponibles.filter:query
?query
vient deSearch: <input ng-model="query">
Un peu tard à la fête, mais cela a fonctionné pour moi. Espérons que quelqu'un d'autre le trouve utile.
la source
ng-if="$index < 6"
m'a permis d'afficher uniquement les 6 premiers tout en gardant le tableau entier interrogeable (j'ai un filtre combiné avec un champ de recherche).ng-if
dans ce cas, ne rendra pas l'élément DOM du répéteur dont la valeur$index
est supérieure à3
. si$index
dans le répéteur est0, 1, or 2
, la condition esttrue
et les nœuds DOM sont créés.ng-if
diffère deng-hide
en ce sens que les éléments ne sont pas ajoutés au DOM.stocker toutes vos données dans un premier temps
EDIT avait accidentellement mis la montre à l'extérieur du contrôleur, elle aurait dû être à l'intérieur.
la source
voici une autre façon de limiter votre filtre sur html, par exemple je veux afficher 3 liste à la fois que j'utiliserai limitTo: 3
la source
Cela fonctionne mieux dans mon cas si vous avez un objet ou un tableau multidimensionnel. Il ne montrera que les premiers éléments, les autres seront simplement ignorés en boucle.
Changez 5 sur ce que vous voulez.
la source
Utilisez limitTo filter pour afficher un nombre limité de résultats dans ng-repeat.
la source
Un autre moyen (et je pense qu'il est préférable) d'y parvenir est d'intercepter les données. limitTo est correct, mais que se passe-t-il si vous limitez à 10 alors que votre tableau contient en fait des milliers?
En appelant mon service, j'ai simplement fait ceci:
Cela limite ce qui est envoyé à la vue, donc cela devrait être bien meilleur pour les performances que de le faire sur le front-end.
la source
data
around, ce n'est pas plus efficace que d'utiliser limitTo.