Ионный - 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
}
Когда мы запускаем наше приложение, мы можем прокручивать карту во всех направлениях. В следующем примере показана часть карты Северной Америки.
Мы можем прокрутить эту карту к любой части, какой захотим. Прокрутим его, чтобы показать Азию.
Есть и другие атрибуты, которые можно применить к ion-scroll. Вы можете проверить их в следующей таблице.
Атрибуты прокрутки
Атрибут | Тип | Детали |
---|---|---|
направление | строка | Возможные направления прокрутки. Значение по умолчаниюy |
дескриптор делегата | строка | Используется для идентификации прокрутки с помощью $ionicScrollDelegate. |
запирание | логический | Используется для блокировки прокрутки в одном направлении за раз. Значение по умолчанию - истина. |
пейджинг | логический | Используется, чтобы определить, будет ли разбит на страницы прокрутка. |
при обновлении | выражение | Вызывается при обновлении по запросу. |
прокрутка | выражение | Вызывается при прокрутке. |
полоса прокрутки-x | логический | Если отображается горизонтальная полоса прокрутки. Значение по умолчанию - истина. |
полоса прокрутки-y | строка | Должна отображаться вертикальная полоса прокрутки. Значение по умолчанию - истина. |
масштабирование | логический | Используется для масштабирования пальцем. |
мин-зум | целое число | Минимальное значение увеличения. |
максимальное увеличение | целое число | Максимальное значение увеличения. |
полоса прокрутки-x | логический | Используется для включения подпрыгивания. Значение по умолчанию на 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 при загрузке экрана |
Прокрутка делегата
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 методы.
Методы делегата
Метод | Параметры | Тип | Детали |
---|---|---|---|
scrollTop (параметр) | shouldAnimate | логический | Прокрутка должна быть анимированной. |
scrollBottom (параметр) | shouldAnimate | логический | Прокрутка должна быть анимированной. |
scrollTo (параметр1, параметр2, параметр3) | слева, вверху, shouldAnimate | число, число, целое число | Первые два параметра определяют значение смещения оси x и y. |
scrollBy (параметр1, параметр2, параметр3) | слева, вверху, shouldAnimate | число, число, целое число | Первые два параметра определяют значение смещения оси x и y. |
zoomTo (параметр1, параметр2, параметр3, параметр4) | level, animate, originLeft, originTop | число, логическое, число, число | level используется для определения уровня масштабирования. originLeft и originRight координаты, где должно происходить масштабирование. |
zoomBy (параметр1, параметр2, параметр3, параметр4) | factor, animate, originLeft, originTop | число, логическое, число, число | factor используется для определения коэффициента увеличения. originLeft и originRight координаты, где должно происходить масштабирование. |
getScrollPosition () | / | / | Возвращает объект с двумя числами в качестве свойств: left и right. Эти числа представляют собой расстояние, которое пользователь прокрутил слева и сверху соответственно. |
anchorScroll (параметр1) | shouldAnimate | логический | Он перейдет к элементу с тем же идентификатором, что и window.loaction.hash. Если этот элемент не существует, он будет прокручиваться вверх. |
freezeScroll (параметр1) | следует заморозить | логический | Используется для отключения прокрутки для определенной прокрутки. |
freezeAllScrolls (параметр1) | следует заморозить | логический | Используется для отключения прокрутки для всех прокруток в приложении. |
getScrollViews () | / | объект | Возвращает объект scrollView. |
$ getByHandle (параметр1) | справиться | строка | Используется для подключения методов к определенному представлению прокрутки с тем же дескриптором. $ionicScrollDelegate. $getByHandle('my-handle').scrollTop(); |