ionic 监听页面滚动,点击停止滚动

Posted lee_xiumei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic 监听页面滚动,点击停止滚动相关的知识,希望对你有一定的参考价值。

类似今日头条,页面上有很多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 监听页面滚动,点击停止滚动的主要内容,如果未能解决你的问题,请参考以下文章

ionic3 水平滚动 + 点击元素滚动到某元素

ionic 视图滚动到顶部

ScrollView可以监听滚动结束事件吗

删除 ionic 3 中的 iOS 滚动反弹

如何在点击下一个或旋转木马的上一个btn时停止滚动顶部?

通过锚标签的点击功能停止滚动顶部