Элемент, используемый для манипулирования прокруткой в ионных приложениях, называется ion-scroll .
Использование прокрутки
Следующие фрагменты кода будут создавать прокручиваемые контейнеры и настраивать шаблоны прокрутки. Сначала мы создадим наш HTML-элемент и добавим к нему свойства. Мы добавим → direction = «xy», чтобы прокрутить каждую сторону. Мы также установим ширину и высоту для элемента прокрутки.
HTML-код
<ion-scroll zooming = "true" direction = "xy" style = "width: 320px; height: 500px"> <div class = "scroll-container"></div> </ion-scroll>
Далее мы добавим изображение нашей карты мира в элемент div , который мы создали внутри ion-scroll, и установим его ширину и высоту.
CSS код
.scroll-container {
width: 2600px;
height: 1000px;
background: url('../img/world-map.png') no-repeat
}
Когда мы запускаем наше приложение, мы можем прокручивать карту в любом направлении. В следующем примере показана часть карты Северной Америки.
Мы можем прокрутить эту карту в любую часть, которую мы хотим. Давайте прокручиваем его, чтобы показать Азию.
Есть и другие атрибуты, которые можно применить к ионной прокрутке . Вы можете проверить их в следующей таблице.
Атрибуты прокрутки
| атрибут | Тип | подробности |
|---|---|---|
| направление | строка | Возможные направления прокрутки. Значением по умолчанию является y |
| Делегат-ручка | строка | Используется для идентификации прокрутки с помощью $ ionicScrollDelegate . |
| блокировка | логический | Используется для блокировки прокрутки в одном направлении за раз. По умолчанию установлено значение true. |
| пейджинг | логический | Используется для определения того, будет ли пейджинг использоваться с прокруткой. |
| на обновления | выражение | Вызывается при обновлении. |
| на свитке | выражение | Вызывается при прокрутке. |
| полоса прокрутки-х | логический | Должна ли быть показана горизонтальная полоса прокрутки. По умолчанию установлено значение true. |
| полоса прокрутки-у | строка | Должна ли быть показана вертикальная полоса прокрутки. По умолчанию установлено значение true. |
| масштабирование | логический | Используется для применения масштабирования. |
| мин-зум | целое число | Минимальное значение масштабирования. |
| макс-зум | целое число | Максимальное значение масштабирования. |
| полоса прокрутки-х | логический | Используется для включения подпрыгивания. Значение по умолчанию для IOS — true, для Android — false. |
Бесконечная прокрутка
Бесконечная прокрутка используется для запуска некоторого поведения, когда прокрутка проходит внизу страницы. В следующем примере показано, как это работает. В нашем контроллере мы создали функцию для добавления элементов в список. Эти элементы будут добавлены, когда свиток пройдет 10% последнего загруженного элемента. Это будет продолжаться, пока мы не нажмем 30 загруженных элементов. Каждый раз, когда загрузка завершается, on-infinite будет передавать событие scroll.infiniteScrollComplete .
HTML-код
<ion-list>
<ion-item ng-repeat = "item in items" item = "item">Item {{ item.id }}</ion-item>
</ion-list>
<ion-infinite-scroll ng-if = "!noMoreItemsAvailable" on-infinite = "loadMore()"
distance = "10%"></ion-infinite-scroll>
Код контроллера
.controller('MyCtrl', function($scope) {
$scope.items = [];
$scope.noMoreItemsAvailable = false;
$scope.loadMore = function() {
$scope.items.push({ id: $scope.items.length});
if ($scope.items.length == 30) {
$scope.noMoreItemsAvailable = true;
}
$scope.$broadcast('scroll.infiniteScrollComplete');
};
})
Другие атрибуты также могут использоваться с ion-infinite-scroll . Некоторые из них перечислены в таблице ниже.
Атрибуты прокрутки
| атрибут | Тип | подробности |
|---|---|---|
| на бесконечное | выражение | Что следует называть при прокрутке до дна. |
| расстояние | строка | Расстояние от дна, необходимое для запуска по бесконечному выражению. |
| волчок | строка | Какой счетчик должен быть показан при загрузке |
| немедленная проверка | логический | Должно ли быть «on-infinite» при загрузке экрана |
Scroll Delegate
Ionic предлагает делегату полный контроль над элементами прокрутки. Его можно использовать, внедрив службу $ ionicScrollDelegate в контроллер, а затем используя предоставляемые им методы.
В следующем примере показан прокручиваемый список из 20 объектов.
HTML-код
<div class = "list"> <div class = "item">Item 1</div> <div class = "item">Item 2</div> <div class = "item">Item 3</div> <div class = "item">Item 4</div> <div class = "item">Item 5</div> <div class = "item">Item 6</div> <div class = "item">Item 7</div> <div class = "item">Item 8</div> <div class = "item">Item 9</div> <div class = "item">Item 10</div> <div class = "item">Item 11</div> <div class = "item">Item 12</div> <div class = "item">Item 13</div> <div class = "item">Item 14</div> <div class = "item">Item 15</div> <div class = "item">Item 16</div> <div class = "item">Item 17</div> <div class = "item">Item 18</div> <div class = "item">Item 19</div> <div class = "item">Item 20</div> </div> <button class = "button" ng-click = "scrollTop()">Scroll to Top!</button>
Код контроллера
.controller('DashCtrl', function($scope, $ionicScrollDelegate) {
$scope.scrollTop = function() {
$ionicScrollDelegate.scrollTop();
};
})
Приведенный выше код создаст следующий экран —
Когда мы нажмем кнопку, свиток будет перемещен наверх.
Теперь мы пройдемся по всем методам $ ionicScrollDelegate .



