Reputation: 3137
I am trying to use Angular filter under ng-repeat
Here is my code:
<ul id="testDiv2" class="dropdownH">
<input type="text" placeholder="Keyword Filter" data-ng-model="search.category.category_name">
<li data-ng-repeat="category in categories track by $index | filter: search.category.category_name"
data-ng-click="selectCategory($index)">
<div class="colony pull-left">
<span>{{category.category_name}}</span>
</div>
<div class="pull-right">
<input type="radio" name="tag" />
<label></label>
</div>
</li>
</ul>
The above code is not working. But if I remove track by $index
then it is working.
Any suggestions?
Upvotes: 0
Views: 148
Reputation: 20445
You have problem with track by expression , use it after the filter
for example use
data-ng-repeat="category in categories | filter:search track by $index"
Working Demo :
angular.module("test",[]).
controller("testController",function($scope){
$scope.categories = [{category_name:'abc'},{category_name:'cde'}];
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test" >
<ul id="testDiv2" ng-controller="testController" class="dropdownH">
<input type="text" placeholder="Keyword Filter" data-ng-model="search">
<li data-ng-repeat="category in categories | filter:search track by $index" data-ng-click="selectCategory($index)">
<div class="colony pull-left"><span>{{category.category_name}}</span></div>
<div class="pull-right"><input type="radio" name="tag" /><label></label></div>
</li>
</ul>
Upvotes: 2
Reputation: 3137
I found the solution
i need to use
<li data-ng-repeat="category in categories | filter: search.category.category_name track by $index" data-ng-click="selectCategory($index)"
Upvotes: 1