Ionic - JavaScript Scroll
Element używany do manipulacji przewijaniem w aplikacjach jonowych nosi nazwę ion-scroll.
Korzystanie z przewijania
Poniższe fragmenty kodu utworzą przewijalne kontenery i dostosują wzorce przewijania. Najpierw utworzymy nasz element HTML i dodamy do niego właściwości. Dodamy →direction = "xy"aby umożliwić przewijanie w każdą stronę. Ustawimy również szerokość i wysokość elementu scroll.
Kod HTML
<ion-scroll zooming = "true" direction = "xy" style = "width: 320px; height: 500px">
<div class = "scroll-container"></div>
</ion-scroll>
Następnie dodamy obraz naszej mapy świata do div element, który stworzyliśmy wewnątrz ion-scroll i ustaw jego szerokość i wysokość.
Kod CSS
.scroll-container {
width: 2600px;
height: 1000px;
background: url('../img/world-map.png') no-repeat
}
Kiedy uruchamiamy naszą aplikację, możemy przewijać mapę w każdym kierunku. Poniższy przykład przedstawia część mapy w Ameryce Północnej.
Możemy przewinąć tę mapę do dowolnej części. Przewińmy to, aby pokazać Azję.
Istnieją inne atrybuty, które można zastosować do ion-scroll. Możesz je sprawdzić w poniższej tabeli.
Przewiń atrybuty
| Atrybut | Rodzaj | Detale |
|---|---|---|
| kierunek | strunowy | Możliwe kierunki przewijania. Wartość domyślna toy |
| uchwyt delegata | strunowy | Służy do identyfikacji zwoju za pomocą $ionicScrollDelegate. |
| zamykający | boolean | Służy do blokowania przewijania w jednym kierunku na raz. Wartość domyślna to prawda. |
| stronicowanie | boolean | Służy do określania, czy stronicowanie będzie używane z przewijaniem. |
| odświeżanie | wyrażenie | Wzywa się „pull-to-refresh”. |
| on-scroll | wyrażenie | Wywoływane podczas przewijania. |
| scrollbar-x | boolean | Czy powinien być wyświetlany poziomy pasek przewijania. Wartość domyślna to prawda. |
| scrollbar-y | strunowy | Czy powinien być wyświetlany pionowy pasek przewijania. Wartość domyślna to prawda. |
| powiększanie | boolean | Służy do powiększania przez szczypanie. |
| min-zoom | liczba całkowita | Minimalna wartość powiększenia. |
| maksymalny zoom | liczba całkowita | Maksymalna wartość powiększenia. |
| scrollbar-x | boolean | Służy do włączania odbijania. Wartość domyślna w systemie IOS to true, w systemie Android false. |
Nieskończone przewijania
Nieskończone przewijanie jest używane do wywoływania pewnych zachowań, gdy przewijanie przechodzi do dołu strony. Poniższy przykład pokazuje, jak to działa. W naszym kontrolerze stworzyliśmy funkcję dodawania pozycji do listy. Te elementy zostaną dodane, gdy zwój przejdzie 10% ostatniego załadowanego elementu. Będzie to trwało, dopóki nie trafimy 30 załadowanych elementów. Za każdym razem, gdy ładowanie jest zakończone,on-infinite będzie nadawać scroll.infiniteScrollComplete zdarzenie.
Kod 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>
Kod kontrolera
.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');
};
})
Inne atrybuty mogą być również używane z ion-infinite-scroll. Niektóre z nich wymieniono w poniższej tabeli.
Przewiń atrybuty
| Atrybut | Rodzaj | Detale |
|---|---|---|
| nieskończony | wyrażenie | Co należy nazwać po przewinięciu do dołu. |
| dystans | strunowy | Odległość od dna potrzebna do wywołania nieskończonej ekspresji. |
| prządka | strunowy | Jaki spinner powinien być pokazany podczas ładowania |
| natychmiastowa kontrola | Boolean | Czy powinno być wywoływane „on-infinite”, gdy screen jest ładowany |
Przewiń delegata
Ionic oferuje delegatowi pełną kontrolę nad elementami przewijania. Można go użyć poprzez wstrzyknięcie$ionicScrollDelegate service do kontrolera, a następnie użyj dostarczonych metod.
Poniższy przykład przedstawia przewijalną listę 20 obiektów.
Kod 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>
Kod kontrolera
.controller('DashCtrl', function($scope, $ionicScrollDelegate) {
$scope.scrollTop = function() {
$ionicScrollDelegate.scrollTop();
};
})
Powyższy kod wygeneruje następujący ekran -
Kiedy stukniemy w przycisk, przewiń zostanie przeniesiony na górę.
Teraz przejdziemy przez wszystkie $ionicScrollDelegate metody.
Metody delegowania
| metoda | Parametry | Rodzaj | Detale |
|---|---|---|---|
| scrollTop (parametr) | shouldAnimate | boolean | Powinien być animowany. |
| scrollBottom (parametr) | shouldAnimate | boolean | Powinien być animowany. |
| scrollTo (parametr1, parametr2, parametr3) | left, top, shouldAnimate | liczba, liczba, liczba całkowita | Pierwsze dwa parametry określają wartość przesunięcia osi xi y. |
| scrollBy (parametr1, parametr2, parametr3) | left, top, shouldAnimate | liczba, liczba, liczba całkowita | Pierwsze dwa parametry określają wartość przesunięcia osi xi y. |
| zoomTo (parametr1, parametr2, parametr3, parametr4) | level, animate, originLeft, originTop | liczba, wartość logiczna, liczba, liczba | level służy do określenia poziomu powiększenia. originLeft i originRight współrzędne, w których powinno nastąpić powiększenie. |
| zoomBy (parametr1, parametr2, parametr3, parametr4) | czynnik, animacja, pochodzenieLeft, pochodzenieTop | liczba, wartość logiczna, liczba, liczba | factor służy do określenia współczynnika powiększenia. originLeft i originRight współrzędne, w których powinno nastąpić powiększenie. |
| getScrollPosition () | / | / | Zwraca obiekt z dwoma liczbami jako właściwościami: left i right. Liczby te reprezentują odległość, którą użytkownik przewinął odpowiednio od lewej i od góry. |
| anchorScroll (parametr1) | shouldAnimate | boolean | Przewinie do elementu o tym samym identyfikatorze co plik window.loaction.hash. Jeśli ten element nie istnieje, zostanie przewinięty do góry. |
| freezeScroll (parametr1) | shouldFreeze | boolean | Służy do wyłączania przewijania dla określonego zwoju. |
| freezeAllScrolls (parametr1) | shouldFreeze | boolean | Służy do wyłączania przewijania wszystkich zwojów w aplikacji. |
| getScrollViews () | / | obiekt | Zwraca obiekt scrollView. |
| $ getByHandle (parametr1) | uchwyt | strunowy | Służy do łączenia metod z określonym widokiem przewijania za pomocą tego samego uchwytu. $ionicScrollDelegate. $getByHandle('my-handle').scrollTop(); |