I have this code.
JavaScript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.nameFilter = '';
$scope.contacts = [
{name: 'GHI'},
{name: 'DEF'},
{name: 'ABC'},
{name: 'JKL'}
];
}
View
<div ng-controller="MyCtrl">
<div><input type="text" ng-model="nameFilter" placeholder="Search..." /></div>
<p ng-repeat="contact in contacts track by $index | filter: nameFilter | orderBy: name">{{ contact.name }}</p>
</div>
I don't know why the order is not working and why the filter is not working.
At another question, I've read about something that objects can't be filtered or ordered. But I have an array of the objects above. Also, it should work!?
What's the problem?
To use tracking with filters, the track by expression has to be added after the filter.
<p ng-repeat="contact in contacts | orderBy: 'name' | filter: nameFilter track by $index">{{ contact.name }}</p>
Here is the working fiddle