Angular получить длину отфильтрованного ng-repeat
Я обновил до Angular 1.2.9 с версии 1.0.8, чтобы помочь с производительностью моего приложения.
Я представил трек, по которому улучшена скорость.
Что я имел
<div class="result row"
data-ng-repeat="result in (filteredItems =
(results |
filter: filterPrice |
filter: filterCategories |
filter: filterTypes |
filter: filterAirConditioning |
filter: filterTransmission |
filter: filterFourByFour |
filter: filterFuelType |
filter: filterNumberOfDoors |
filter: filterOnAirport |
filter: filterFuelPolicy |
filter: filterUnlimitedMileage |
filter: filterFreeCancellation |
filter: filterTheftProtection |
filter: filterCDW |
filter: filterTaxesIncluded |
filter: filterProviders ) ) |
orderBy: [orderByOptions, orderByPriceLowToHigh, orderByPriority] |
limitTo: pageSize">
что у меня сейчас
<div class="result row"
data-ng-repeat="result in results |
filter: filterPrice |
filter: filterCarCategories |
filter: filterCarTypes |
filter: filterAirConditioning |
filter: filterTransmission |
filter: filterFourByFour |
filter: filterFuelType |
filter: filterNumberOfDoors |
filter: filterOnAirport |
filter: filterFuelPolicy |
filter: filterUnlimitedMileage |
filter: filterFreeCancellation |
filter: filterTheftProtection |
filter: filterCDW |
filter: filterTaxesIncluded |
filter: filterProviders |
orderBy: [orderByOptions, orderByPriceLowToHigh, orderByPriority] |
startFrom: currentPage*pageSize |
limitTo: pageSize track by $index">
У меня есть разбиение на страницы, которое искажает длину отфильтрованных элементов. Этого больше нет. Кроме того, некоторым другим JS нужны фильтрованные элементы для ведения журнала, аналитики и т.д.
В представлении HTML я могу получить длину ng-repeat после применения фильтров
{{(results |
filter: filterPrice |
filter: filterCarCategories |
filter: filterCarTypes |
filter: filterAirConditioning |
filter: filterTransmission |
filter: filterFourByFour |
filter: filterFuelType |
filter: filterNumberOfDoors |
filter: filterOnAirport |
filter: filterFuelPolicy |
filter: filterUnlimitedMileage |
filter: filterFreeCancellation |
filter: filterTheftProtection |
filter: filterCDW |
filter: filterTaxesIncluded |
filter: filterProviders)
.length}}
который немного глоток, но возвращает число, которое я хочу. Как передать это в область $?
Ответы
Ответ 1
Вы можете создать промежуточную переменную, которая будет удерживать фильтрованный массив:
data-ng-repeat="result in filteredResults = (results | filter:filterPrice | filter:filterCarCategories | etc.)"
а затем можно использовать:
filteredResults.length