ng-repeat with track by and filter and orderBy not working
27,482
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
Related videos on Youtube
Author by
PatrickB
Updated on July 09, 2022Comments
-
PatrickB almost 2 years
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?
-
naeramarth7 about 9 yearsIt does matter. Without the quotes, it will look for the content of
$scope.name
which does not exist. A jsfiddle of your version: jsfiddle.net/saw1uLs9 -
PatrickB about 9 yearsNo! :D It can't be sooooo easy? But it works :D Thank you very much!
-
PatrickB about 9 yearsInteresting! Thanks for this example without quotes.
-
Sayan over 8 yearsOf all the similar questions, this is the most apt answer!
-
Ibrahim.H almost 6 yearsSamething to say for orderBy clause.