PatrickB PatrickB - 7 months ago 84
AngularJS Question

ng-repeat with track by and filter and orderBy not working

i have this code.


var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
$scope.nameFilter = '';
$scope.contacts = [
{name: 'GHI'},
{name: 'DEF'},
{name: 'ABC'},
{name: 'JKL'}


<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">{{ }}</p>

I don't know why the order not working and why the filter is not working.

At another question i've readed about something that objects can't be filtered or ordered. But i have an array with the objects above. Also it should work!?

Whats the problem?

Thanks in Advance!


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">{{ }}</p>

Here is the working fiddle