Kombuwa
Kombuwa

Reputation: 1651

Angular ng-repeat item Count after filtered

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

Answers (1)

Vamsi
Vamsi

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

Related Questions