PatrickB PatrickB - 1 year ago 170
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!

Answer Source

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

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download