Reputation: 1651
how to get the number of item in ng-repeat after filtered?
but when i use @{{requestlist.length}} code i get total count of records. instead of that i need count of records after filtered by category and text search.
Please hep me
HTML
<input type="text" placeholder="Search" ng-model="search">
<label class="checkbox" for="checkboxes-@{{subcatagory.id}}" ng-repeat="subcatagory in subcategories">
<input name="checkboxes" id="checkboxes-@{{subcatagory.id}}" ng-click="includeCatagory(subcatagory.id)" type="checkbox">
@{{subcatagory.titel}}
</label>
<div class="eol-layout-s3" ng-repeat="request in requestlist | filter:catagoryFilter | filter:search | orderBy:'titel':true">
<div id="jobDesc-bd">
<a href="/request/@{{request.id}}" >
<strong>
@{{request.titel | characters:30}}
</strong>
</a>
<small>
@{{request.message | characters:200}}
</small>
</div>
</div>
<h2>count: @{{requestlist.length}}</h2>
Angular
$http.get('/api/subcategories/{{$seller->category_id}}/').success(function(subcategories){
$scope.subcategories = subcategories;
});
$http.get('/api/requests/list/').success(function(requests){
$scope.requestlist = requests;
});
$scope.catagoryFilter = function(cat) {
if ($scope.catagoryIncludes.length > 0) {
if ($.inArray(cat.subcategorie_id, $scope.catagoryIncludes) < 0)
return;
}
return cat;
}
Upvotes: 1
Views: 3033
Reputation: 9780
Modify
ng-repeat="request in requestlist
| filter:catagoryFilter | filter:search | orderBy:'titel':true"
To
ng-repeat="request in (filterResult = (requestlist | filter:catagoryFilter
| filter:search | orderBy:'titel':true))"
length can be accessed by {{filterResult.length}}
in template or $scope.filterResult.length
in controller.
Note: you might want to initialize $scope.filterResult = [];
some times it gives undefined errors.
Notice that you can store the filtered result by assigning the result after filter in some variable like in above example (filterResult
). Then you can use this model "filterResult"
. Even in controller $scope.filterResult
is available to use.
Upvotes: 5