Ionic - JavaScript Scroll
องค์ประกอบที่ใช้สำหรับการเลื่อนการปรับแต่งในแอปไอออนิกเรียกว่าไฟล์ ion-scroll.
ใช้ 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 เป็นจริงบน Android เท็จ |
เลื่อนไม่มีที่สิ้นสุด
การเลื่อนแบบไม่มีที่สิ้นสุดใช้เพื่อทริกเกอร์พฤติกรรมบางอย่างเมื่อการเลื่อนผ่านด้านล่างของหน้า ตัวอย่างต่อไปนี้แสดงวิธีการทำงาน ในคอนโทรลเลอร์ของเราเราได้สร้างฟังก์ชันสำหรับเพิ่มรายการในรายการ รายการเหล่านี้จะถูกเพิ่มเมื่อการเลื่อนผ่าน 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' เมื่อโหลดหน้าจอ |
เลื่อน 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 วิธีการ
วิธีการมอบหมาย
วิธี | พารามิเตอร์ | ประเภท | รายละเอียด |
---|---|---|---|
scrollTop (พารามิเตอร์) | ควรเคลื่อนไหว | บูลีน | ควรเลื่อนเป็นภาพเคลื่อนไหว |
scrollBottom (พารามิเตอร์) | ควรเคลื่อนไหว | บูลีน | ควรเลื่อนเป็นภาพเคลื่อนไหว |
scrollTo (พารามิเตอร์ 1, พารามิเตอร์ 2, พารามิเตอร์ 3) | ซ้ายบนควรเคลื่อนไหว | จำนวนตัวเลขจำนวนเต็ม | พารามิเตอร์สองตัวแรกกำหนดค่าของ x และออฟเซ็ตแกน y |
scrollBy (พารามิเตอร์ 1 พารามิเตอร์ 2 พารามิเตอร์ 3) | ซ้ายบนควรเคลื่อนไหว | จำนวนตัวเลขจำนวนเต็ม | พารามิเตอร์สองตัวแรกกำหนดค่าของ x และออฟเซ็ตแกน y |
zoomTo (พารามิเตอร์ 1 พารามิเตอร์ 2 พารามิเตอร์ 3 พารามิเตอร์ 4) | ระดับ, เคลื่อนไหว, originLeft, originTop | หมายเลขบูลีนหมายเลขหมายเลข | level ใช้เพื่อกำหนดระดับที่จะซูมไป originLeft และ originRight พิกัดที่ควรเกิดการซูม |
zoomBy (พารามิเตอร์ 1 พารามิเตอร์ 2 พารามิเตอร์ 3 พารามิเตอร์ 4) | factor, animate, originLeft, originTop | หมายเลขบูลีนหมายเลขหมายเลข | factor ใช้เพื่อกำหนดปัจจัยในการซูม originLeft และ originRight พิกัดที่ควรเกิดการซูม |
getScrollPosition () | / | / | ส่งคืนวัตถุที่มีตัวเลขสองตัวเป็นคุณสมบัติ: left และ right. ตัวเลขเหล่านี้แสดงระยะทางที่ผู้ใช้เลื่อนจากด้านซ้ายและจากด้านบนตามลำดับ |
anchorScroll (พารามิเตอร์ 1) | ควรเคลื่อนไหว | บูลีน | มันจะเลื่อนไปยังองค์ประกอบที่มีรหัสเดียวกับไฟล์ window.loaction.hash. หากไม่มีองค์ประกอบนี้จะเลื่อนขึ้นไปด้านบน |
freezeScroll (พารามิเตอร์ 1) | ควรตรึง | บูลีน | ใช้เพื่อปิดการเลื่อนสำหรับการเลื่อนเฉพาะ |
freezeAllScrolls (พารามิเตอร์ 1) | ควรตรึง | บูลีน | ใช้เพื่อปิดการเลื่อนสำหรับการเลื่อนทั้งหมดในแอพ |
getScrollViews () | / | วัตถุ | ส่งคืนวัตถุ scrollView |
$ getByHandle (พารามิเตอร์ 1) | ด้ามจับ | สตริง | ใช้เพื่อเชื่อมต่อวิธีการกับมุมมองการเลื่อนเฉพาะโดยใช้ที่จับเดียวกัน $ionicScrollDelegate. $getByHandle('my-handle').scrollTop(); |