Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析


Posted in Javascript onJanuary 18, 2016

引言

在诺亚财富项目中,使用到了通讯录,如果只是简单的查看,我个人觉得可能过于单调,于是就在查看的基础上,增加了点击滑动的效果。目的有两个:1.体验不错。2.通讯录的数据量较大,我们在点击一个模块的同时,使这个模块滑动至最上层,可视范围也会变大。

效果

点击一个模块,页面即开始向上滑动,直到这个模块至于页面最上层。
这是点击前的地方,我们点击运营中心:

Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析

点击后就会有一个滑动的动画使这个模块滑动到顶部:

Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析实现

获取元素,动态生成id
我们在点击一个元素的同时,我们需要让程序知道我们点击了哪里,是具体到一个div,而不是我们手指点击的地方。
在之前的wiki中有介绍到,接口返回的数据格式是一维数组,在转成多维数组的同时需要对数据进行一次遍历,在这个时候我们就可以对各条数据加上id了:

Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析

在前端页面这样绑定id

<div ng-repeat="x in contacts_list" id="{{x.id}}">

Jquery中的scrolltop

Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析

一般大家都会想到使用jquery的这个方法,

使用方法是:

$(selector).scrollTop(offset)

这样可以实现滑动,但是在使用过程中发现:点击同一个模块,不同的滑动位置点击滑动的距离也不一样,而且滑动到上层的内容就不能再滑动回去的,这与我们的需求严重不符。
并且也研究了一些其他的插件,都不能实现我们想要的效果,那就像如此强大的ionic框架,是否会给我们提供这样一个方法呢?

$ionicScrollDelegate

授权控制滚动视图(通过ion-centent和 ion-scroll指令创建)。
该方法直接被$ionicScrollDelegate服务触发,来控制所有滚动视图。用 $getByHandle方法控制特定的滚动视图。

这里包含了较多的方法,其中resize()方法将在ng-if中经常被使用到,另外

它提供了一个获取屏幕当前滚动高度的方法getPositionScroll():

getScrollPosition()

• 返回: 对象 滚动到该视图的位置,具有一下属性:
o {数值} left 从左侧到用户已滚动的距离(开始为 0)。
o {数值} top 从顶部到用户已滚动的距离 (开始为 0)。

这里我们只需要用到垂直高度,所以使用$ionicScrollDelegate. getPositionScroll().top即可获取当前滚动高度。

ScrollTo与scrollBy

这两个方法就类似于绝对路径(scrollTo)与相对位置(scrollBy)的关系。

我们获取当前点击模块的位置使用如下方法:

document.getElementById(x.id).offsetTop

这里获取的是此div距离顶部的位置,但是我们每次的需求是希望我们点击的模块滑动到屏幕的最上方,而不是整个内容的顶部,所以这里我们使用scrollBy比较好。

这样的话,每次只需要移动屏幕顶部到点击模块的距离即可,方法是:

var scroll = document.getElementById(x.id).offsetTop - $ionicScrollDelegate.getScrollPosition().top;

然后在点击的方法中调用ionic自带的scrollBy方法:

$ionicScrollDelegate.resize();
$ionicScrollDelegate.scrollBy(0,scroll,true);

至此,此功能已经实现,希望对大家有帮助。

本文所述到此结束,Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析已经实现了,希望对大家有所帮助。

Javascript 相关文章推荐
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
JavaScript中逗号运算符介绍及使用示例
Mar 13 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
用vue构建多页面应用的示例代码
Sep 20 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
Apr 01 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
Aug 23 Javascript
jQuery实现多级联动下拉列表查询框
Jan 18 #Javascript
jquery validate表单验证的基本用法入门
Jan 18 #Javascript
jQuery添加删除DOM元素方法详解
Jan 18 #Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 #Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 #Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 #Javascript
实例详解jQuery表单验证插件validate
Jan 18 #Javascript
You might like
php json_encode值中大括号与花括号区别
2013/09/30 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
自己使用总结Python程序代码片段
2015/06/02 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
详解python 注释、变量、类型
2018/08/10 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
详解python中sort排序使用
2019/03/23 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
顺丰快递Java软件工程师面试题
2015/07/31 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
就业推荐表自我鉴定
2013/10/29 职场文书
入党积极分子介绍信
2014/01/17 职场文书
求职简历的自我评价
2014/01/31 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
高中班主任评语
2014/12/30 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
使用python创建股票的时间序列可视化分析
2022/03/03 Python