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 相关文章推荐
JavaScript入门教程(1) 什么是JS
Jan 31 Javascript
JQuery获取样式中的background-color颜色值的问题
Aug 20 Javascript
将json当数据库一样操作的javascript lib
Oct 28 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
Bootstrap table两种分页示例
Dec 23 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
vue源码nextTick使用及原理解析
Aug 13 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
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上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
JavaScript中的prototype使用说明
2010/04/13 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
Python入门篇之文件
2014/10/20 Python
Python中的迭代器漫谈
2015/02/03 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
基于python实现计算两组数据P值
2020/07/10 Python
python爬虫请求头设置代码
2020/07/28 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
2014年保密工作总结
2014/11/22 职场文书
领导离职感言
2015/08/03 职场文书
2016年寒假见闻
2015/10/10 职场文书
筑梦中国心得体会
2016/01/18 职场文书
《去年的树》教学反思
2016/02/18 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript