How to filter a select with ng-options in Angular?
You just forgot ":" after filter keyword.
<select ng-model="ctrl.selection" ng-options="person as person.name for person in ctrl.candidates | filter:{gender:'female'}"></select>
a bit late maybe, but for others looking for info I'm using this.
$scope.deliveryAddresses = data;
Where data is complex Json id, name and city received from webapi in my Angular controller by $http.get
I'm using it in my Html page with the following snippet
ng-options="address.name for address in deliveryAddresses | filter:{name:search} track by address.id
where search is a reference to a textbox.Simple and efficient.
Hope it helps someone.
filter
can only operate on arrays.
But you can create a custom filter:
ElectionApp.filter('females', [ function() { return function (object) { var array = []; angular.forEach(object, function (person) { if (person.gender == 'female') array.push(person); }); return array; };}]);
and then write
ng-options="name as person.name for (id, person) in ctrl.candidates | females">