ionic 实现仿苹果手机通讯录搜索功能
前言
由于之前做的SRM移动应用采用的是ionic1.x框架进行开发的,由于性能方便的诟病,导致用户体验不是很友好,于是想着怎么样去提高应用的性能问题。此时刚好ionic3.x框架已发布,由于ionic1.x框架是在ng1.x的框架基础上开发的,但是ionic3.x是在ng4.x基础上开发的。于是呼去ng官网上去了解了ng的一下语法及规则的使用,发现ng4.x不向前兼容,ng4.x是基于Es6标准进行开发的。本着出生不拍牛犊的性子,觉得升级应该不会太难,没想到这里面的坑太多了,费了九牛二虎之力才做了一个通讯录模块。为了后续用ionic3.x开发的同志们避免我的覆辙,走太多的弯路,本着开源的精神特此将通讯录模块贡献给大家。
需求
业务需求描述
业务需求描述
1.搜索关键字,将通讯录检索出来,并分组显示,并且可以清空搜索的关键字。
2.高亮显示关键字。
3。右侧中的首字母悬浮在右侧,点击时可快速定位。显示点击的字母居中显示,并带有滑动动画效果。
根据上面的效果图,我们编写静态页面模拟数据,整理好思路,我们可以了解到我们在开发的时候需要定义一下属性。
1,定义一个字符串存放请求的通讯录的地址,定义一个字符串变量存放搜索的关键字,定义一个数组存放右侧检出的首字母,定义一个二维数组存放通讯录数据,定义一个二维数组存放搜索后的通讯录数据。
代码的实现
搜索关键字高亮显示
由于之前ng1.x的过滤器,无法向后兼容,ng4.x采用的是pipe管道进行过滤,了解了一下使用之后开始撸代码咯。实现方式如下:
模拟本地数据请求的通讯录如下
由于后端返回的数据格式,和我需要处理的数据格式不匹配,所以首先进行了数据格式化处理之后,
搜索关键字分组显示
由于后端返回的数据格式,和我需要处理的数据格式不匹配,所以首先进行了数据格式化处理之后,在通过Array.fliter的方法进行过滤处理.实现的代码如下:
右侧首字母定位
给每一个通讯录分组的搜字母一个id属性,通过ElementRef服务找到当前的dom节点并获取当前的位置, 通过ionic3中content中提供的scrollTo函数属性快速定位,实现过程如下:
渲染的模板页面如下
实现的Class类如下:
总结:
虽然功能需求比较简单,但是由于对ng4.x的框架不是很了解导致走了不少弯路。希望后续能够一路顺风下去。
需要源码的可以联系我。qq:991085978
ionic 实现仿苹果手机通讯录搜索功能的更多相关文章
- [Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能
感谢eoe社区的分享 最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能 ...
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
转载:http://blog.csdn.net/xiaanming/article/details/12684155 转载请注明出处:http://blog.csdn.net/xiaanming/ar ...
- Lucene5.5.4入门以及基于Lucene实现博客搜索功能
前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...
- Vue下简单分页及搜索功能
最近利用Vue和element ui仿写了个小页面,记一哈分页和搜索功能的简单实现. 首页 emmmm..... 搜索框输入..... 搜索完成 数据是直接写在这里面的: cardPhoto:[ ...
- Android搜索功能的案例,本地保存搜索历史记录......
开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...
- Yii 1开发日记 -- 搜索功能及Checkbox的实现
用yii 1实现后台的搜索功能,效果如下图: 1.模型中: public function search() { $criteria = new CDbCriteria; //独立高级搜索 if(is ...
- iOS--- UITableView + UISearchDisplayController - - - - -实现搜索功能
iOS中UISearchDisplayController用于搜索,搜索栏的重要性我们就不说了,狼厂就是靠搜索起家的,现在越来越像一匹没有节操的狼,UC浏览器搜索栏现在默认自家的神马搜索,现在不管是社 ...
- SharePoint 2013 搜索功能,列表项目不能完全被索引
描述 最近一个站点,需要开启搜索功能,然后创建内容源,开始爬网,发现列表里只有一部分被索引,很多项目没有被索引,甚是奇怪,如下图(其实列表里有80几条项目). 首先爬网账号是系统账号.服务器管理员,所 ...
- idea 光标变成粗体且当前文件搜索功能无法使用的问题
今天安装了idea最新版,安装完成后发现光标变成了粗体,并且快捷键在使用时出现了问题,比如:ctrl+F搜索功能无法使用 经过反复修改配置也无法改善情况,后来一次重启看到下面小窗弹出有关vim的一个提 ...
随机推荐
- 使用C#创建Windows服务 并发布Windows 服务
一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Servic ...
- 线程demo异常处理
今天写了个线程小demo,出现了异常, 如下: Traceback (most recent call last): File "threading.py", line 1, in ...
- HTML5外包注意事项-开发HTML5游戏的九大坑与解决方法剖析
随着移动社区兴起,势必带动HTML5的革命.未来一两年内,HTML5移动游戏必将呈现大爆发趋势. 以下是整理的HTML5游戏研发.市场趋势以及渠道布局和技术解决方案的内容.希望大家能从本文中找到对HT ...
- google搜索引擎爬虫爬网站原理
google搜索引擎爬虫爬网站原理 一.总结 一句话总结:从几个大站开始,然后开始爬,根据页面中的link,不断爬 从几个大站开始,然后开始爬,根据页面中的link,不断加深爬 1.搜索引擎和数据库检 ...
- NetSec2019 20165327 EXP5 MSF基础应用
NetSec2019 20165327 EXP5 MSF基础应用 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如 ...
- 如何增加亚马逊listing多个类目节点
流量是电商销售的必要因素,可以说,任何成功的电商平台都离不开流量.亚马逊listing优化做得好,不仅能提高产品的曝光率,还能提升转换率,而好的类目可以吸引大的流量.帮你快速爬升. 首先我们来了解一下 ...
- spoj839Optimal Marks
题意:略 怎样判断属于S,T集合. 如果从S出发到不了某点,该点出发也到不了T,那么割给那边都行. 如果S出发能到该点,该点出发也能到T,这种情况下dinic没结束. 只能从S到该点:只能分到S集.只 ...
- MIUI8系统完整刷入开发版开启root权限的经验
小米的机器不同手机型号一般情况官网都提供两个不同的安卓系统版本,可分为稳定版和开发版,稳定版没有提供root超级权限管理,开发版中就支持了root超级权限,很多情况我们需要使用的一些功能强大的APP, ...
- xadmin邮箱验证码 标题 EmailVerifyRecord object
[修改users-models模块] 1.如果这样不生效 def __unicode__(self): return '{0}({1})'.format(self.code, self.email) ...
- nameode启动过程
namenode在内存和磁盘中都保存了fsimage和edits文件 内存中保证hdfs文件系统的访问效率,磁盘中保证hdfs文件系统的安全性 namenode的文件组成: fsimage文件:保存文 ...