How to filter a select with ng-options in Angular? How to filter a select with ng-options in Angular? angularjs angularjs

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">