ionic-JS:Scroll(滾動(dòng))

ion-scroll

授權(quán): $ionicScrollDelegate

創(chuàng)建一個(gè)包含所有內(nèi)容的可滾動(dòng)容器。

用法
<ion-scroll 
  [delegate-handle=""] 
  [direction=""] 
  [paging=""] 
  [on-refresh=""] 
  [on-scroll=""] 
  [scrollbar-x=""] 
  [scrollbar-y=""] 
  [zooming=""] 
  [min-zoom=""] 
  [max-zoom=""]> 
... 
</ion-scroll>

API

屬性 類型 詳情
delegate-handle(可選) 字符串 該句柄利用$ionicScrollDelegate指定滾動(dòng)視圖。
direction(可選) 字符串 滾動(dòng)的方向。 'x' 或 'y'。 默認(rèn) 'y'。
paging(可選) 布爾值 分頁(yè)是否滾動(dòng)。
on-refresh(可選) 表達(dá)式 調(diào)用下拉刷新, 由ionRefresher觸發(fā)。
on-scroll(可選) 表達(dá)式 當(dāng)用戶滾動(dòng)時(shí)觸發(fā)。
scrollbar-x(可選) 布爾值 是否顯示水平滾動(dòng)條。默認(rèn)為false。
scrollbar-y(可選) 布爾值 是否顯示垂直滾動(dòng)條。默認(rèn)為true。
zooming(可選) 布爾值 是否支持雙指縮放。
min-zoom(可選) 整數(shù) 允許的最小縮放量(默認(rèn)為0.5)
max-zoom(可選) 整數(shù) 允許的最大縮放量(默認(rèn)為3)

ion-infinite-scroll

隸屬于ionContentionScroll

當(dāng)用戶到達(dá)頁(yè)腳或頁(yè)腳附近時(shí),ionInfiniteScroll指令允許你調(diào)用一個(gè)函數(shù) 。
當(dāng)用戶滾動(dòng)的距離超出底部的內(nèi)容時(shí),就會(huì)觸發(fā)你指定的on-infinite。

用法
  <ion-content ng-controller="MyController"> 
    <ion-infinite-scroll 
      on-infinite="loadMore()" 
      distance="1%"> 
    </ion-infinite-scroll>
  </ion-content>


function MyController($scope, $http) { 
  $scope.items = []; 
  $scope.loadMore = function() { 
    $http.get('/more-items').success(function(items) { 
      useItems(items); 
      $scope.$broadcast('scroll.infiniteScrollComplete');
    }); 
  }; 

  $scope.$on('stateChangeSuccess', function() { 
    $scope.loadMore(); 
  });
}

當(dāng)沒(méi)有更多數(shù)據(jù)加載時(shí),就可以用一個(gè)簡(jiǎn)單的方法阻止無(wú)限滾動(dòng),那就是angular的ng-if 指令:

<ion-infinite-scroll 
  ng-if="moreDataCanBeLoaded()" 
  icon="ion-loading-c" 
  on-infinite="loadMoreData()">
</ion-infinite-scroll>

API

屬性 類型 詳情
on-infinite 表達(dá)式 當(dāng)滾動(dòng)到底部時(shí)觸發(fā)的時(shí)間。
distance(可選) 字符串 從底部滾動(dòng)到觸發(fā)on-infinite表達(dá)式的距離。默認(rèn): 1%。
icon(可選) 字符串 當(dāng)加載時(shí)顯示的圖標(biāo)。默認(rèn): 'ion-loading-d'。

$ionicScrollDelegate

授權(quán)控制滾動(dòng)視圖(通過(guò)ionContent
ionScroll
指令創(chuàng)建)。
該方法直接被$ionicScrollDelegate服務(wù)觸發(fā),來(lái)控制所有滾動(dòng)視圖。用 $getByHandle方法控制特定的滾動(dòng)視圖。

用法
  <body ng-controller="MainCtrl"> 
    <ion-content> 
      <button ng-click="scrollTop()">滾動(dòng)到頂部!</button> 
    </ion-content>
  </body>


function MainCtrl($scope, $ionicScrollDelegate) { 
  $scope.scrollTop = function() { 
    $ionicScrollDelegate.scrollTop(); 
  };
}

高級(jí)用法的例子,用帶有兩個(gè)滾動(dòng)區(qū)域的delegate-handle來(lái)特殊控制。

<body ng-controller="MainCtrl"> 
  <ion-content delegate-handle="mainScroll"> 
    <button ng-click="scrollMainToTop()"> 
      滾動(dòng)內(nèi)容到頂部! 
    </button> 
    <ion-scroll delegate-handle="small" style="height: 100px;"> 
      <button ng-click="scrollSmallToTop()"> 
        滾動(dòng)小區(qū)域到頂部! 
      </button> 
    </ion-scroll> 
  </ion-content>
</body>


function MainCtrl($scope, $ionicScrollDelegate) { 
  $scope.scrollMainToTop = function() { 
    $ionicScrollDelegate.$getByHandle('mainScroll').scrollTop(); 
  }; 
  $scope.scrollSmallToTop = function() { 
    $ionicScrollDelegate.$getByHandle('small').scrollTop(); 
  };
}

方法
resize()
告訴滾動(dòng)視圖重新計(jì)算它的容器大小。

scrollTop([shouldAnimate])
參數(shù) 類型 詳情
shouldAnimate(可選) 布爾值 是否應(yīng)用滾動(dòng)動(dòng)畫。
scrollBottom([shouldAnimate])
參數(shù) 類型 詳情
shouldAnimate(可選) 布爾值 是否應(yīng)用滾動(dòng)動(dòng)畫。
scrollTo(left, top, [shouldAnimate])
參數(shù) 類型 詳情
left 數(shù)值 水平滾動(dòng)的值。
top 數(shù)值 垂直滾動(dòng)的值。
shouldAnimate(可選) 布爾值 是否應(yīng)用滾動(dòng)動(dòng)畫。
scrollBy(left, top, [shouldAnimate])
參數(shù) 類型 詳情
left 數(shù)值 水平滾動(dòng)的偏移量。
top 數(shù)值 垂直滾動(dòng)的偏移量。
shouldAnimate(可選) 布爾值 是否應(yīng)用滾動(dòng)動(dòng)畫。

getScrollPosition()

返回: 對(duì)象 滾動(dòng)到該視圖的位置,具有一下屬性:

  • {數(shù)值} left 從左側(cè)到用戶已滾動(dòng)的距離(開始為 0)。
  • {數(shù)值} top 從頂部到用戶已滾動(dòng)的距離 (開始為 0)。

anchorScroll([shouldAnimate])

告訴滾動(dòng)視圖用一個(gè)帶有id的滾動(dòng)元素匹配window.location.hash。
如果沒(méi)有匹配到元素,它會(huì)滾動(dòng)到頂部。

參數(shù) 類型 詳情
shouldAnimate(可選) 布爾值 是否應(yīng)用滾動(dòng)動(dòng)畫。

getScrollView()

返回: 對(duì)象 匹配具有授權(quán)的滾動(dòng)視圖。

rememberScrollPosition(id)

當(dāng)滾動(dòng)視圖被銷毀時(shí)(用戶離開頁(yè)面),頁(yè)面最后的滾動(dòng)位置會(huì)被指定的索引保存。
注意:根據(jù)一個(gè)ion-nav-view將頁(yè)面和一個(gè)視圖關(guān)聯(lián),rememberScrollPosition自動(dòng)保存它們的滾動(dòng)。
相關(guān)方法:scrollToRememberedPosition, forgetScrollPosition (低)。
在下面的例子中,ion-scroll元素的滾動(dòng)位置會(huì)被保留, 甚至當(dāng)用戶切換開關(guān)時(shí)。

<ion-toggle ng-model="shouldShowScrollView"></ion-toggle>
<ion-scroll delegate-handle="myScroll" ng-if="shouldShowScrollView"> 
  <div ng-controller="ScrollCtrl"> 
    <ion-list> 
      <ion-item ng-repeat="i in items">{{i}}</ion-item> 
    </ion-list> 
  </div>
</ion-scroll>


function ScrollCtrl($scope, $ionicScrollDelegate) { 
  var delegate = $ionicScrollDelegate.$getByHandle('myScroll'); 

  // 這里可以放任何唯一的ID。重點(diǎn)是:要在每次重新創(chuàng)建控制器時(shí) 
  // 我們要加載當(dāng)前記住的滾動(dòng)值。 
  delegate.rememberScrollPosition('my-scroll-id'); 
  delegate.scrollToRememberedPosition(); 
  $scope.items = [];
   for (var i=0; i<100; i++) { 
    $scope.items.push(i); 
  }
}
參數(shù) 類型 詳情
id 字符串 保留已滾動(dòng)位置的滾動(dòng)視圖的id。

forgetScrollPosition()

停止保存這個(gè)滾動(dòng)視圖的滾動(dòng)位置。

scrollToRememberedPosition([shouldAnimate])

如果這個(gè)滾動(dòng)視圖有個(gè)和它的滾動(dòng)位置關(guān)聯(lián)的id(通過(guò)調(diào)用rememberScrollPosition方法),然后記住那個(gè)位置,加載那個(gè)位置然后滾動(dòng)到那個(gè)位置。

參數(shù) 類型 詳情
shouldAnimate(可選) 布爾值 是否應(yīng)用滾動(dòng)動(dòng)畫。

$getByHandle(handle)

參數(shù) 類型 詳情
handle 字符串

返回: delegateInstance一個(gè)代表性實(shí)例就是只控制帶有delegate-handle
的滾動(dòng)視圖來(lái)匹配給定的句柄。

例如: $ionicScrollDelegate.$getByHandle('my-handle').scrollTop();

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,694評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,668評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,846評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,394評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,635評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容