Ionic幻燈片

1. 簡介

ionic的幻燈片(滑動塊)主要由ionic-slide-box指令完成,使用幻燈片,我們可以做啓動App時的滑動畫面,也可實現頁面的左右滑動切換。在ionic中,我們使用ion-slide-box指令來聲明幻燈片元素,使用ion-slide指令聲明幻燈頁元素。

2. ion-slide-box屬性

  • does-continue
    值爲布爾值,設置是否循環播放,即到最後一頁幻燈頁的時候可以向左滑動到第一頁。
  • auto-play
    值爲布爾值,設置是否自動播放,默認頁面切換的間隔4000ms,可以通過屬性slide-interval調整。
  • slide-interval
    值是一個數字,用來設置自動播放的間隔時間,單位爲ms,該屬性只有在auto-play爲true下才有意義。
  • show-pager
    值是布爾值,用來設置是否顯示分頁器,分頁器是用來指示幻燈片的數量及當前幻燈片的選中狀態的。

3. ion-slide-box

  • pager-click
    分頁器點擊事件,該項要求show-pager爲true,該屬性值爲一個當前作用域上的函數表達式,這個函數將被傳入被點擊的分頁按鈕對應的幻燈頁序號(從0開始)。下面是一個點擊對應的分頁按鈕跳到對應的分頁的代碼。這裏用到了腳本接口,即服務$ionicSlideBoxDelegate。
<ion-slide-box pager-click="go(index)">
    <ion-slide>
        <div class="box blue"><h1>BLUE</h1></div>
    </ion-slide>
    <ion-slide>
        <div class="box yellow"><h1>YELLOW</h1></div>
    </ion-slide>
    <ion-slide>
        <div class="box pink"><h1>PINK</h1></div>
    </ion-slide>
</ion-slide-box>
var app = angular.module("myApp",['ionic']);
app.controller("myController", function 
    ($scope,$ionicSlideBoxDelegate) {
    $scope.go = function(index) {
        console.log(index);
        $ionicSlideBoxDelegate.slide(index);
    }
});
  • on-slide-changed 屬性同樣是一個當前作用域的函數表達式,會傳遞一個當前幻燈頁序號(不是滑動前的序號,是滑動後的序號)index參數。
  • active-slide
    屬性是一個當前作用域的變量,這個變量會同步當前幻燈頁的索引號,當前索引頁發生變化會導致變量值會發生變化,變量值變化也會導致當前索引也發生變化(用這個來跳轉頁面不如slide方法,因爲該方法還可以指定切換時間),下面是一個將當前幻燈頁索引顯示出來的例子。
<div class="bar bar-header dark-bg">
    <h1 class="title">{{"現在所處的頁面:"+index}}</h1>
</div>
<div class="content scroll-content has-header">
    <ion-view>
        <ion-slide-box active-slide="index">
            <ion-slide>
                <div class="box positive-bg"><h1>BLUE</h1></div>
            </ion-slide>
            <ion-slide>
                <div class="box energized-bg"><h1>YELLOW</h1></div>
            </ion-slide>
            <ion-slide>
                <div class="box balanced-bg"><h1>GREEN</h1></div>
            </ion-slide>
        </ion-slide-box>
    </ion-view>
</div>
<script>
var app = angular.module("myApp",['ionic']);
app.controller("myController", function ($scope,$ionicSlideBoxDelegate) {
    $scope.index = 0;
});
</script>
  • delegatehandle
    值爲字符串,創建一個句柄給$ionicSlideBoxDelegate使用。

4.$ionicSlideBoxDelegate服務

  • update()
    重新繪製幻燈片。
  • slide(to,[speed])
    第一個參數to是必須的,代表着要滑動到的幻燈頁的索引,第二個參數speed是可選的,表示以毫秒爲單位的切換時間。
  • previous()
    切換到前一張幻燈頁。
  • next()
    切換到後一張幻燈頁。
  • currentIndex()
    獲得當前幻燈頁的序號。
  • slideCount()
    獲得幻燈頁的數量。
  • stop()
    停止幻燈頁的滑動,如果要繼續滑動,要顯示的調用start()。
  • start()
    在stop()調用後可以調用該方法使幻燈片繼續滑動。
  • $getByHandle(handle)
    handle是個字符串,此方法能夠讓我們操縱具體滑動塊實例。如下面的代碼,當有多個滑動塊時,如果不能獲得對應標識的滑動塊再操作,那麼操作將會適用到所有滑動塊上。
<ion-view>
    <ion-slide-box delegate-handle="slide-box1" pager-click="go(index)">
        <ion-slide>
            <div class="box positive-bg"><h1>BLUE</h1></div>
        </ion-slide>
        <ion-slide>
            <div class="box energized-bg"><h1>YELLOW</h1></div>
        </ion-slide>
        <ion-slide>
            <div class="box balanced-bg"><h1>GREEN</h1></div>
        </ion-slide>
    </ion-slide-box>
    <ion-slide-box  delegate-handle="slide-box2" >
        <ion-slide>
            <div class="box positive-bg"><h1>BLUE</h1></div>
        </ion-slide>
        <ion-slide>
            <div class="box energized-bg"><h1>YELLOW</h1></div>
        </ion-slide>
        <ion-slide>
            <div class="box balanced-bg"><h1>GREEN</h1></div>
        </ion-slide>
    </ion-slide-box>
</ion-view>
<script>
var app = angular.module("myApp",['ionic']);
app.controller("myController", function
    ($scope,$ionicSlideBoxDelegate) {
    $scope.go = function (index) {
        $ionicSlideBoxDelegate.slide(index); //點擊第一個分頁器按鈕,兩個頁面都會跳轉
        /*如果用這條指令則只有一個頁面會跳轉
        $ionicSlideBoxDelegate.getByHandler('slide-box1').slide(index);  */
    };
});
</script>
發佈了32 篇原創文章 · 獲贊 96 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章