Cela semble être facile, mais je suis nouveau dans angular et je ne saisis pas très bien ce concept. J'espère exécuter une répétition ng sur un ensemble de données et être en mesure de filtrer les résultats basé sur une option sélectionnée dans une zone de sélection, en utilisant exactement le même ensemble de données.
J'ai créé un tableau d'options et les ai attribuées à la variable $ scope.OurTeamCategories.
angular.module('app', [])
.controller('Main', ['$scope', function($scope) {
$scope.ourTeamCategories = [
{"id":18,"title":'Management'},
{"id":19,"title":'Administration'},
{"id":21,"title":'Designers'},
{"id":22,"title":'Accounts'},
]
}]);
Ensuite, dans le fichier HTML, je crée dynamiquement la boîte de sélection en utilisant ng-options et utilise ng-repeat pour créer une liste de ces catégories. Tout fonctionne bien, mais maintenant je veux pouvoir filtrer
<div ng-app="app">
<div ng-controller="Main">
<select name="show-filter" ng-model="catFilter" ng-options="category.title for category in ourTeamCategories">
<option value="{{category.id}}"></option>
</select>
<li ng-repeat="cat in ourTeamCategories">
<h3>{{cat.title}}</h3>
<!-- for testing -->
<b>input: {{catFilter.id}}</b> - - ID: {{cat.id}}
</li>
</div>
</div>
Je pensais pouvoir exécuter un filtre de la manière suivante, mais je reçois une erreur. Quelqu'un peut-il me dire ce que je fais mal?
<li ng-repeat="cat in ourTeamCategories | filter {cat.id:catFilter.value}">
J'ai créé un plunker ici: http://plnkr.co/edit/YwHknAm3X2NUdxDeUjS8?p=preview
Vous devez mentionner l'identifiant direct dans votre filer comme id
qui recherchera à travers ourTeamCategories
id & pour un résultat plus précis, ajoutez true
à la fin assurera la correspondance exacte plutôt que contient et aussi deux points manqués :
<li ng-repeat="cat in ourTeamCategories | filter : {id: catFilter.id}: true">
Mise à jour
Vous mélangez deux approches en même temps comme ng-options
avec ng-repeat
. Je pense que vous devriez vous en tenir à ng-options
, donc dans votre option ng actuelle qui définit title
valeur dans votre ng-model
<select name="show-filter" ng-model="catFilter"
ng-options="category as category.title for category in ourTeamCategories">
</select>
Plunkr fourchu ici
Vous avez besoin de deux points après filter
. Essaye ça:
filter: {cat.id:catFilter.value}