1. 程式人生 > >ionic 監聽頁面滾動,點擊停止滾動

ionic 監聽頁面滾動,點擊停止滾動

ret 有一個 state start lin 開始 sta 點擊 需要

類似今日頭條,頁面上有很多card,點擊每個card跳轉該card的詳情頁面。這裏有一個問題,當我滾動頁面時,會先後觸發touchstart、touchmove、touchend,但是當touchend後,頁面仍會因為慣性而繼續滾動。這個時候,我想點擊頁面停止滾動,而不是跳轉到某個card的詳情頁面。

原理很簡單:設置一個狀態,初始值為true,頁面滾動時變為false,頁面停止滾動,則恢復為true,只有這個值為true時,才能觸發跳轉事件,即進入card詳情頁面。

這裏需要用到ionic的一個屬性:ionic.scroll.isScrolling,只要頁面在滾動,其值為true;

代碼:

$scope.canGoDetailCard = true; //一開始默認能跳轉進card詳情頁;

//監聽touch事件

window.addEventListener(‘touchstart‘, function() {

  if (ionic.scroll.isScrolling) { //判斷頁面是否正在滾動

    $scope.canGoDetailCard = false; // 如果正在滾動,則點擊跳轉card詳情頁失效

    ionic.scroll.isScrolling = false; //同時停止滾動;

  } else {

    $scope.canGoDetailCard = true; //沒有滾動時,跳轉進入card詳情頁

  }

});

$scope.goDetailCard = function() {

  if (!$scope.canGoDetailCard) return; // 如果$scope.canGoDetailCard = false, 則返回

  $state.go(‘card‘); //進入card詳情頁

};

ionic 監聽頁面滾動,點擊停止滾動