vue2.0 实现汉字A-Z排序与手机通讯录效果

先上一张效果图:

列表html template (使用 ydui移动端UI , 地址:http://vue.ydui.org/)

<yd-cell-group  v-for="item in memberList" :title="item.letter" :id="item.letter" :ref="item.letter"  style="padding: 0;margin: 0"><yd-cell-item v-for="i in item.data"><img slot="left" v-lazy="imageUrl+i.Image" width="30" height="30" style="border-radius: 15px"><span slot="left" style="margin-left: 10px">{{i.Name}}</span></yd-cell-item></yd-cell-group>

字母索引html

<div v-if="showLetter" class="centerLetter"><strong>{{letter}}</strong></div><div class="letterList" v-if="showLetterList"><a v-for="letter in Letters"  style="display: block;font-size: 14px;margin-top: 1px"  @click="jumper(letter)"><span>{{letter}}</span></a><a style="display: block"  @click="jumper('#')">#</a></div>

script

<script>
import axios from 'axios'
import qs from 'qs'
import util from '@/util.js'
import $ from 'jquery';
export default {components:{'class-select':classSelect},data(){return{locationHref:this.$route.path,imageUrl:this.imageApi,fullHeight: document.documentElement.clientHeight,showLetter:false,showLetterList:true,letter:'',Letters:['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'],panelShow:false,gradeId:'',classId:'',className:'',memberList:[],startDate:'',}},computed:{scrollHeight(){return (Number(this.fullHeight)-94)+'px';}},filters:{},methods:{hidePanel () {this.panelShow = false;},showPanel(){this.panelShow = true;},showInfo(data){console.log(data);this.className = data.class_name;this.gradeId = data.grade_id;this.classId = data.class_id;this.getClassMember();},//拉取班级成员getClassMember(){this.$dialog.loading.open('');axios.get(this.Api+'ClassMember/classmemberlist/1/1000?G_ID='+this.gradeId+'&C_ID='+this.classId).then(res =>{var list = res.data.data;this.$dialog.loading.close('');//返回的姓名数组按A-Z排序this.memberList = util.pySort(list);console.log("memberList",this.memberList );})},//字母索引锚点定位jumper(key){if (key=='#') {$('#content').animate({scrollTop:0},100)return;}else{this.letter=key;var _this=this;  //点击侧边字母后屏幕中间的字母也显示,500毫秒隐藏if(this.showLetter==false){this.showLetter=true;setTimeout(function(){_this.showLetter=false;},500)}else{this.showLetter=false;}var el = document.getElementById(key);if(el){var scrollPosition= el.offsetTop;console.log("scrollPosition",scrollPosition)$('#content').animate({scrollTop:scrollPosition},100)} }}},mounted(){}
}
</script>

util.js (只对汉字做了排序)

//首字母截取使用的是 https://github.com/sxei/pinyinjs/点击打开链接 这个工具库
//示例:
//<script type="text/javascript" src="pinyin_dict_firstletter.js"></script>
//<script type="text/javascript" src="pinyinUtil.js"></script>
//<script type="text/javascript">
//pinyinUtil.getFirstLetter('小茗同学'); // 输出 XMTX
//pinyinUtil.getFirstLetter('大中国', true); // 输出 ['DZG', 'TZG']
//</script>
export default{pySort(arr){var $this = this;var letters = "ABCDEFGHJKLMNOPQRSTWXYZ".split('');var result = [];var curr;for(var i=0;i<letters.length;i++){curr = {letter: letters[i], data:[]};for(var j =0;j<arr.length;j++){var firstLetter = pinyinUtil.getFirstLetter(arr[j].Name)var initial = firstLetter.charAt(0);//截取第一个字符if(initial==letters[i]||initial==letters[i].toLowerCase()){curr.data.push({Name:arr[j].Name,Image:arr[j].Image,MonitorFlag:arr[j].MonitorFlag,Student_ID:arr[j].Student_ID});}}if(curr.data.length) {result.push(curr);}}return result;
}}

vue2.0 实现汉字A-Z排序与手机通讯录效果相关推荐

  1. vue2.0 实现汉字A-Z排序与手机通讯录效果

    先上一张效果图: 列表html  template  (使用 ydui移动端UI  , 地址:http://vue.ydui.org/) <yd-cell-group v-for="i ...

  2. 使用vue2.0 vue-router vuex 模拟ios7操作

    其实你也可以,甚至做得更好... 首先看一下效果:用vue2.0实现SPA:模拟ios7操作 与 通讯录实现 github地址是:https://github.com/QRL909109/ios7 如 ...

  3. 一款基于Vue2.0高仿微信App的单页应用

    概述 利用Vue2.0模仿微信app,努力做到以假乱真的效果.个人独立开发,源码中有详细的注释,为新手提供许多有用的提示信息.项目的第一期接近尾声,后期会增加 仿3DTouch.登陆.注册.emoji ...

  4. java pinyin4j 首字母_通讯录之按汉字首字母排序 --java--pinyin4J

    最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下. 一.工具介 ...

  5. MySQL按照汉字拼音A-Z排序或者汉字拼音和英文字母混合A-Z排序

    1.按照汉字拼音A-Z排序 主要用到convert这个函数把字符编码转换一下,这里转成gbk select * from 表名 where name like '%%' order by conver ...

  6. MySql中用sql语句实现按汉字首字母排序

    转载自https://blog.csdn.net/hulinyi123456/article/details/79915521 1.mysql 1)按照汉字的拼音排序 如果存储汉字的字段编码使用的是G ...

  7. js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 az排序

    js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序--z~a排序 & a~z排序 示例1 let arr = ["贵州省", "江苏省", & ...

  8. 表格排序 支持汉字按拼音排序,面向对象的使用方法

    周末无聊利用swapNode方法写了个排序算法,性能比较一般,超简单的冒泡排序,但是由于使用了swapNode,所以TR以及TD对象后绑定的属性不会丢失,同时解决了checkbox在swapNode后 ...

  9. mysql 字母分组_MySQL按照汉字的拼音排序、按照首字母分类

    项目中有时候需要按照汉字的拼音排序,比如联系人列表.矿物分类等,有的还需要按拼音字母从A到Z分类显示. 如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用 ...

最新文章

  1. console修改 ajax,【快速】chrome中console下ajax访问后台
  2. 探讨float类型的数值,为什么两个float不能直接相等
  3. 15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)
  4. 东方PHP授权系统修复版盗版检测源码
  5. windows写文件到ubuntu之samba
  6. Django 的系统时区设置 RPC
  7. Hihocoder 1142 三分
  8. 最好用的数据可视化神器,没有之一
  9. Python数据结构实战——队列(Queue)
  10. flume学习(三):Flume Interceptors的使用
  11. 自制操作系统软盘镜像的创建过程
  12. 西南科技大学OJ题 交换二叉树的孩子结点1105
  13. java生成zipf分布_在Python中如何从范围为n的Zipf分布中创建值?
  14. Ti c64x 优化基本策略
  15. ad网络标号怎么用_altium designer网络标号的作用范围
  16. 6-2 折半查找 (15分)_数据结构实验7_羊卓的杨
  17. Windows10蓝牙突然失灵 无法连接鼠标
  18. 购买阿里云服务器ECS快速上云
  19. 让你自己制作的木马和病毒用360安全卫士杀不出。加壳,免杀,加花,捆绑,压缩。
  20. java百元买百兔 穷举法_JAVA--算法与数据结构- 逢7过百钱白鸡不死神兔【1/100】...

热门文章

  1. (原)让win8开机自动进行宽带连接
  2. python基础技巧(三)——tf
  3. Vercel 配置服务端代理
  4. Android Studio 插件推荐
  5. [转载]t检验、t分布、t值
  6. fwknop核心配置fwknopd.conf参数--中文书虫
  7. 小米架构调整成立手机产品部,Meta设立全新职位CISO,特斯拉中国仍在招人,今日更多大新闻在此...
  8. 在线预览PDF文件功能实现
  9. 微信小程序开发环境(阿里云服务搭建+可运行的demo)
  10. Day5:经典的圣诞歌都在这里了