1

Если я использую ng-repeat с filter, как определить, сколько элементов отфильтровано (или наоборот, сколько показано)? В частности, я хотел бы создать панель поиска, которая создает фильтр, но я также хотел бы показать, сколько элементов скрыто фильтром (например, что-то вроде Showing 6 of 10 results).Определение количества результатов, отображаемых фильтром ng-repeat

ответ

4

Пожалуйста, смотрите здесь http://jsbin.com/xuyuy/1/edit

В ретранслятора вы можете создать новый массив, т.е.: personsfiltered

ng-repeat="person in personsfilterd = (persons | filter : search) 

и после этого просто отображать длину Orignal массива и отфильтрованный массив:

Showing {{personsfilterd.length}} of {{persons.length }} results 

Полный код здесь:

var app = angular.module('app', []); 

app.controller('fCtrl', function($scope) { 

    $scope.persons = [ 
    'Mike', 'Tom', 'Tim', 'Jim', 'Ken' 
    ] 

}); 

<div ng-app="app"> 
    <div ng-controller="fCtrl"> 
     <input type="text" ng-model = "search"> Showing {{personsfilterd.length}} of {{persons.length }} results 
     <li ng-repeat="person in personsfilterd = (persons | filter : search)">{{person}}</li> 
    </div> 
    </div> 
+0

Я использовал это некоторое время, и он отлично работал, но по какой-то причине он переставал работать. Можете ли вы, возможно, остановиться на моем новом вопросе: http://stackoverflow.com/questions/26341910/variable-set-in-ng-repeat-not-being-created –

0

Во-первых, это имеет ngRepeat: $index, $first, $middle, $last для определения текущего положения. Поэтому, я думаю, вас может заинтересовать $last. Я не уверен, будет ли он собирать исходный счет или отфильтрованный.

EDIT: Вы можете получить отсчет исходного значения из вашего Ctrl, установив varX.length и используя, что в вашем шаблоне (HTML код), а затем, при условии, что $last возвращается окончательный подсчет + 1 (как это 0 на основе) вы можете иметь счетчик после применения фильтра.

ngRepeat

0

Я нашел свой ответ here. Решение заключается в назначении фильтрованных данных новой переменной в ng-repeat. Потенциально может вызвать некоторые проблемы с памятью, но в моем случае это не очень важно.

Смежные вопросы