类似今日头条,页面上有很多card,点击每个card跳转该card的详情页面。这里有一个问题,当我滚动页面时,会先后触发touchstart、touchmove、touchend,但是当touchend后,页面仍会因为惯性而继续滚动。这个时候,我想点击页面停止滚动,而不是跳转到某个card的详情页面。

原理很简单:设置一个状态,初始值为true,页面滚动时变为false,页面停止滚动,则恢复为true,只有这个值为true时,才能触发跳转事件,即进入card详情页面。

这里需要用到ionic的一个属性——ionic.scroll.isScrolling。关于这个属性,可以使用on-scroll来测试:

html: ion-content scroll="true" on-scroll="onScroll()"></ion-content>

js: $scope.onScroll = function() {

  console.log(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 监听页面滚动,点击停止滚动的更多相关文章

  1. react 监听页面滚动

    html: // 如果使用typescript, 定义dom类型 private dom: HTMLDivElement | null // ReactJS中,对Div监听只需要绑定 onScroll ...

  2. vue中监听页面滚动和监听某元素滚动

    ①监听页面滚动 在生命周期mounted中进行监听滚动: mounted () { window.addEventListener('scroll', this.scrollToTop) }, 在方法 ...

  3. jq监听页面的滚动事件,

    jQuery监听页面的滚动状态,实现代码: $(document).scroll(function() {       var scroH = $(document).scrollTop(); //滚 ...

  4. vue 中监听页面滚动

    监听页面滚动 在methods中定义一个方法 handleScroll() { //获取滚动时的高度 let scrollTop = window.pageYOffset || document.do ...

  5. 21.JQ的监听事件(点击div外面可以让它消失)

    JQ的监听事件(点击div外面可以让它消失) //监听整个页面 $(document).bind("click", function() { //给需要的对象赋予事件 $(&quo ...

  6. uni-app中不使用scroll-view组件,监听页面滑直底部事件

    最终达到的目标效果 将要用到 监听页面滚动事件:onPageScroll 获取节点信息uni.createSelectorQuery() 标签布局 <template> <view ...

  7. 监听tableview的点击事件

    // 监听tablview的点击事件 - (void)addAGesutreRecognizerForYourView { UITapGestureRecognizer *tapGesture = [ ...

  8. highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度

    highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度 作者:highcharts | 时间:2014-6-11 14:07:05 | [小  大] | ...

  9. webview缓存及跳转时截取url地址、监听页面变化

    缓存及一些设定 我在做一些项目时,h5做的项目手机浏览器能使用,但是在搬到webview时候不能用,这个时候通过查阅资料,原来是webview没有设定好,包括缓存.缓存大小及路径等等 mWebview ...

随机推荐

  1. IDEA_debug窗口问题,debugger窗口消失,窗口漂浮等

  2. LazyMan的实现

    题目如下: 实现一个LazyMan,可以按照以下方式调用: LazyMan(“Hank”)输出: Hi! This is Hank! LazyMan(“Hank”).sleep(10).eat(“di ...

  3. 5个适用于初学者的有用数据分析表达式(DAX)函数

    数据分析表达式(DAX)入门可能令人生畏,但是,当你了解一些基本功能后,你就可以帮助你解答许多有关数据的新见解.虽然在Power BI或Pivot Charts中创建视觉效果很容易,但我们经常希望查看 ...

  4. 如何在Ubuntu/Linux内使用 zip 压缩隐藏文件?

    假设你的当前目录结构为: A文件--B文件夹--C文件等 | | D文件夹-E文件 | | 等等文件(含隐藏) 那么在使用zip命令时加上 -r 即可包含整个目录结构和隐藏文件: zip -r B.z ...

  5. MySQL内置功能

    视图 # 创建视图 create view course2teacher as select * from course inner join teacher on course.teacher_id ...

  6. 【c++基础】遍历目录并写入txt文件-linux

    前言 /****************************************************************************** * File: get_train ...

  7. [LeetCode&Python] Problem 258. Add Digits

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...

  8. inner join 与一般笛卡尔积的区别

    inner join 与一般笛卡尔积的区别:inner join是笛卡尔积的特殊形式.如果有表a和表b,表a有m条记录,表b有n条记录,则一般笛卡尔积后得到的记录条数是m*n条,记录之间的组合是随意的 ...

  9. CentOS7为firewalld添加开放端口及相关操作

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...

  10. LA3510 Pixel Shuffle

    题意 PDF 分析 思路挺简单的,题目中的每个命令(包括命令的逆)相当于一个置换. 用\(O(n^2k)\)的时间复杂度从右往左求出这些置换的乘积A,然后求m使Am = I(I为全等置换) 还是先把A ...