AngularJS — выберите все элементы, которые в данный момент видны

В настоящее время я пытаюсь найти лучший способ выбрать все элементы в списке, которые в настоящее время видны.

В настоящее время у меня есть большой список элементов в моей области, к которым применено разбиение по страницам, поэтому одновременно видны только несколько элементов этого списка. У меня есть кнопка «Выбрать все», где желаемое поведение состоит в том, чтобы выбрать все элементы, которые в данный момент видны, а не все элементы в списке.

Я думаю, что могу добиться этого, используя директиву ng-init для добавления видимых элементов в список в контроллере, затем я могу использовать этот список, чтобы увидеть, что видно. Мне кажется, что должно быть лучшее решение, которое мне не хватает.

У кого-нибудь есть элегантное решение?


person Dan    schedule 16.05.2014    source источник


Ответы (1)


Не самый ясный из вопросов, но я предполагаю, что вы используете ng-repeat с каким-то фильтром, который сбивает элементы только с теми, которые вы хотите показать. Вы можете установить встроенную переменную области видимости при объявлении ng-repeat и работать с ней.

Итак, если ваш html выглядит так:

<div ng-repeat="item in items | someFilter"></div>

Вы можете изменить его на:

<div ng-repeat="item in visibleItems = (items | someFilter)"></div>

Затем вы можете использовать $scope.visibleItems внутри вашего контроллера, и он будет содержать только определенное подмножество элементов, которые прошли ваш someFilter.

person Joe    schedule 16.05.2014