Filtre de Tableau à l'Aide de Cases à cocher avec AngularJS
J'ai le code suivant où je suis en train de filtre sur les joueurs dans le tableau en cochant une case à cocher pour la pantsize d'un joueur.
Je sais que j'ai le tableau de données dans un répéteur, et puis le filtrage des entrées dans un élément à l'extérieur de l'élément de tableau de données (deux divs), cela pourrait-il être la cause de la déconnexion? Parce que j'ai remarqué quand j'ai ajouter la case à cocher à la répétition de l'élément i ne obtenir une certaine forme de rétroaction tableau lorsque je clique sur la case à cocher.
La liaison d'une recherche d'entrée de la boîte est tellement facile à mettre en œuvre, cependant, je vais passer beaucoup trop de temps à arriver cette simple case à cocher pour filtrer les données.
Donc im maintenant atteindre l'angle de la communauté pour un peu d'aide sur le filtrage avec des cases à cocher que la documentation ne couvre pas très bien ce sujet.
Ici est le violon: http://jsfiddle.net/rzgWr/1/
<div ng-controller="MyCtrl">
<div>
<div ng-repeat="pants in players | groupBy:'pants'">
<b><input type="checkbox" ng-model="query"/>{{pants}}</b>
<span>({{(players | filter:pants).length}})</span>
</div>
<div>
<ul>
<li ng-repeat="player in players | filter:query">
<p><b>{{player.name}}</b></p>
<p>{{player.shirt}} {{player.pants}}, {{player.shoes}}</p>
</li>
</ul>
</div>
</div>
function MyCtrl($scope, filterFilter) {
$scope.players = [
{name: 'Bruce Wayne', shirt: 'XXL', pants: '42', shoes: '12'},
{name: 'Wayne Gretzky', shirt: 'XL', pants: '38', shoes: '10'},
{name: 'Michael Jordan', shirt: 'M', pants: '32', shoes: '9'},
{name: 'Player Two', shirt: 'XXL', pants: '42', shoes: '12'}
];
$scope.$watch('filtered', function (newValue) {
if (angular.isArray(newValue)) {
console.log(newValue.length);
}
}, true);
}
Toute aide/conseils vous en remercions.
Grâce.
OriginalL'auteur Antonio Herrera | 2014-01-11
Vous devez vous connecter pour publier un commentaire.
EDIT 2
Par toutes les requêtes de l'OP, ici, c'est l'état final.
http://jsfiddle.net/rzgWr/19/
MODIFIER (OP ajouté un bounty)
Par votre générosité, est-ce cela que vous vouliez?
http://jsfiddle.net/rzgWr/17/
Est-ce cela que vous vouliez?
http://jsfiddle.net/rzgWr/12/
Modèle
Script
Paroles: Quand j'ai essayer cette fonctionnalité avec des données à partir du serveur, le filtrage ne fonctionne plus parce que le ng-init exécute pas en mesure d'exécuter l'expression sur des données dynamiques. Toute réflexion sur ce que je pourrais utiliser à la place de ng-init? Merci.
Ouais je l'ai utilisé que je ne voudrais pas avoir à injecter le
$filter
service dans le contrôleur. Voici tout ce que vous devez faire: jsfiddle.net/rzgWr/16Je suppose que l'une ou l'autre solution serait de travailler, tant que la cascade de filtrage est un rétrécissement de la matrice de données. Idéalement, j'aimerais que les filtres de mise à jour selon les données restantes. Donc, si par exemple des Chaussures: M est filtré et un pantalon de tailles Petites et Moyennes restent dans les données filtrées, puis seulement le Pantalon de filtres pour les Petites et Moyennes sont visibles et disponibles pour de plus amples filtrage. N'a que peu d'aide?
Ce que vous avez fait est tout simplement magnifique! Vous avez ajouté une valeur énorme à ce forum pour le sujet de l'Angulaire et je suis plus qu'heureux de la récompense! 🙂
OriginalL'auteur
Plein optimzed Code js
Je suis à l'aide de votre code pour un scénario similaire que j'ai pour mon exigence. la seule différence est que je veux avoir le non filtré objets passés à la filterType boucle. Dans votre code, vous passer le startFilter qui est les objets filtrés, mais j'ai envie de passer à la non filtrée les objets chaque fois que l'utilisateur vérifie plusieurs options le code montre tous les objets pour ceux qui sont sélectionnés. Savez-vous quels changements dois-je faire pour y arriver? J'ai essayé différentes solutions, mais ils briser le code.
si vous déboguez que la valeur sélectionnée, vous obtiendrez la réponse..pour un exemple de mettre "de la console.log($champ d'application.usePants);" return {42:true} pour certains; si vous souhaitez désélectionner que la valeur u n'a besoin de définir de la sorte: '{42:false}';
OriginalL'auteur