Учебники

Ионный — JavaScript Scroll

Элемент, используемый для манипулирования прокруткой в ​​ионных приложениях, называется 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
}

Когда мы запускаем наше приложение, мы можем прокручивать карту в любом направлении. В следующем примере показана часть карты Северной Америки.

Ионный Javascript Scroll Start

Мы можем прокрутить эту карту в любую часть, которую мы хотим. Давайте прокручиваем его, чтобы показать Азию.

Ионный Javascript Scroll End

Есть и другие атрибуты, которые можно применить к ионной прокрутке . Вы можете проверить их в следующей таблице.

Атрибуты прокрутки

атрибут Тип подробности
направление строка Возможные направления прокрутки. Значением по умолчанию является 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();
   };
})   

Приведенный выше код создаст следующий экран —

Ионный Javascript Scroll Bottom

Когда мы нажмем кнопку, свиток будет перемещен наверх.

Ионическая вершина прокрутки Javascript

Теперь мы пройдемся по всем методам $ ionicScrollDelegate .