Объяснение моего кода:
Ниже представлена простая таблица с ng-repeat
, которая перебирает ctrl.persons
и сохраняет результаты в переменной ctrl.results
. Включен фильтр, который позволяет пользователю искать результаты с помощью ввода текста, а sliceResults
— это настраиваемый фильтр для моего Разбиение на страницы Angular-UI (определяет смещение и предел отображаемых результатов на основе текущей страницы разбиения на страницы).
<table>
<tr ng-repeat="result in ctrl.results = (ctrl.persons | filter:searchKeywords) | sliceResults: ctrl.paginationOffset : ctrl.paginationLimit">
<td>{{ $index+1 }}</td>
<td>{{ result.firstName }}</td>
<td>{{ result.lastName }}</td>
</tr>
</table>
Results : {{ ctrl.results.length }}
Ситуация:
В конце кода ctrl.results.length
возвращает количество результатов в реальном времени и изменяется соответствующим образом, когда пользователь вводит текст для поиска результатов.
Однако, когда количество результатов изменяется, моя нумерация страниц не меняется соответствующим образом и поэтому показывает неправильное количество страниц (например, она все еще может отображать 3 страницы, хотя есть только 1 страница). Количество страниц зависит от переменной в моем контроллере (this.paginationTotalItems
).
Вопрос:
Как мне обновить переменную this.paginationTotalItems
в моем контроллере, как только количество результатов (ctrl.results.length
) изменится в моем представлении? (Или какой альтернативный способ обновить мою разбивку на страницы?)
Что я пробовал:
Я далеко не эксперт по AngularJS, так что не смейтесь надо мной! Я попытался поместить функцию в ng-change
со счетчиком результатов, но это не удалось, потому что, по-видимому, для этого требуется ng-model
, а я не вижу, чтобы это работало с ng-repeat
.
Я также пытался использовать $watch
для переменной ctrl.results
, но это приводит к серьезной ошибке консоли, поскольку она прерывается после x итераций. Кроме того, я бы предпочел не использовать $watch
, потому что я читал, что он работает только с $scope
, который я бы предпочел не использовать (я использую синтаксис «контроллер как»).
Заранее спасибо, я приму ответ, который поможет мне решить мою проблему.