1.字母组件给父组件传递当前点击的字母值

  1. @click="handleLetterClick" //绑定事件
  2.  
  3. handleLetterClick (e) { //向上传递参数
  4. this.$emit('change',e.target.innerText)
  5. },

2.父组件接收字母组件传递的值

  1. <city-alphabet :cities="cities" @change="handleLetterChange"></city-alphabet>
  2.  
  3. //先定义一个空的接收
  4. data () {
  5. return {
  6. letter:''
  7. }
  8. },
  9. //将接收的值传给letter
  10. handleLetterChange (letter){
  11. this.letter = letter;
  12. }
  13.  
  14. //传给对应的城市组件
  15. <city-list :letter="letter"></city-list>
  16.  
  17. //这里需要better-scroll插件
  18. import Bscroll from 'better-scroll'
  19.  
  20. //绑定需要插件的地方
  21. mounted () {
  22. this.scroll = new Bscroll(this.$refs.wrapper);
  23. },
  24.  
  25. //城市组件监听letter的变化,实现跳转
  26. watch:{
  27. letter() {
  28. if(this.letter){
  29. const element=this.$refs[this.letter][0];
  30. this.scroll.scrollToElement(element);
  31. }
  32. }
  33. }

3.实现滑动跳转城市

  1. //绑定滑动事件
  2. <li v-for="item of letters" :key="item" :ref="item"
  3. @touchstart="handleTouchStart"
  4. @touchmove="handleTouchMove"
  5. @touchend="handleTouchEnd"
  6. @click="handleLetterClick"
  7. >{{item}}</li>
  1. //用计算属性来存储(cities)letters
  2. computed:{
  3. letters(){
  4. const letters=[];
  5. for(let i in this.cities){
  6. letters.push(i);
  7. }
  8. return letters;
  9. }
  10. }, 
  1. //data
  2. data (){
  3. return {
  4. touchStatus:false,
  5. startY:0,
  6. timer:null
  7. }
  8. },

 

  1. //为了让性能提高,startY,就计算一次
  2. updated(){
  3. //A元素对应顶部的高度
  4. this.startY=this.$refs['A'][0].offsetTop;
  5. },

  

  1. handleTouchStart(){
  2. this.touchStatus=true;
  3. },
  4. handleTouchMove(e){
  5. if(this.touchStatus){
  6. // 函数节流
  7. if(this.timer){
  8. clearTimeout(this.timer)
  9. }
  10. this.timer=setTimeout(() => {
  11. // 当前手指到最顶部的高度-头部高度
  12. const touchY = e.touches[0].clientY - 79;
  13. //(touchY - startY)手指到A顶部的高度/20(每个字母的高度)=当前第几个字母
  14. const index = Math.floor((touchY - this.startY) / 20);
  15. if(index >= 0 && index < this.letters.length){
  16. this.$emit('change',this.letters[index]);
  17. }
  18. },16);
  19. }
  20. },
  21. handleTouchEnd(){
  22. this.touchStatus=false;
  23. }

  

 

vue实现点击、滑动右侧字母对应各个城市的更多相关文章

  1. 自己定义View----点击滑动选择字母列表

    因为项目须要,也不想使用网上的写好的控件,于是作死的自己定义了一个控件.特此记录下成功.效果例如以下: 首先须要把全部的字母绘制出来: private static String letters[] ...

  2. day 86 Vue学习之八geetest滑动验证

    Vue学习之八geetest滑动验证   本节目录 一 geetest前端web中使用 二 xxx 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 geetest前端web ...

  3. vue 如何点击按钮返回上一页

    1,vue 如何点击按钮返回上一页呢? 这是vue挂载的范围html代码 <div @click="goOff()">返回</div> 下面是点击返回的方法 ...

  4. vue验证码点击更新

    vue验证码点击更新 不说啥,直接贴代码 html: <img class="captcha" @click="editCaptcha" :src=&qu ...

  5. vue实现点击图标,图标在2s中完成旋转

    <!-- 点击 vue实现点击图标,图标在2s中完成旋转 1==>如何让它在2s内完成旋转 使用动画 transform: rotate(-180deg); 动画的运动状态 transit ...

  6. vue 的点击事件怎么获取当前点击的元素

    手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元   首先 vue的点击事件 是用 @cl ...

  7. Vue 仿B站滑动导航

    仿照B站制作的滑动导航功能,进行了部分优化,例如可定制默认选中元素,并将选中元素居中显示,可动态更改数据,可定制回调函数取的下标和选中元素内容,可根据需求制作N级联动 已开发成插件,使用方法与源码请前 ...

  8. day 88 Vue学习之八geetest滑动验证

      本节目录 一 geetest前端web中使用 二 xxx 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 geetest前端web中使用 下载gt文件,官网地址,下面我 ...

  9. VUE中使用geetest滑动验证码

    一,准备工作:服务端部署 下载文件gt.gs: https://github.com/GeeTeam/gt3-python-sdk 需要说明的是这里的gt.js文件,它用于加载对应的验证JS库. 1. ...

随机推荐

  1. zookeeper 图形化的客户端工具:ZooInspector

    查看Zookeeper中的数据,我们可以通过ZkCli.sh命令客户端查看,但是不太直观,因为Zookeeper本身数据是以树型结构存储组织的, 今天推荐一个实用的界面操作工具ZooInspector ...

  2. Fixed-point multiplication (C166 A*B/B)

    I want to multiply two fixed point numbers. After the multiplication I have to shift the result so t ...

  3. makedepend: command not found(转)

    makedepend: command not found 解决方案: 修改Makefile MAKEDEPEND=$(CC) -M 参考: When I set CROSS_COMPILE, `MA ...

  4. py-day1-5 python 分割 、 字母大小转换

    # partition() 分割为3段 从左往右遇见的第一个开始 test = 'bassaiwoll' v = test.partition('s') print(v) ('ba', 's', 's ...

  5. Digispark红外接收器

    一.红外协议之NEC协议原理 NEC协议格式: 首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是 ...

  6. 阅读<Video Timing Controller>笔记

    阅读<Video Timing Controller>笔记   1.Video Timing Controller Block Diagram 2.Example Video Timing ...

  7. XE5 Android 开发数据访问server端[转]

    建立一个webservices  stand-alone vcl application 作为手机访问的服务端 1.new->other->webservices 2.选择 stand-a ...

  8. java rsa 公钥加密

    注意JAVA 的STRING .getBytes() 默认取的是操作系统的编码,最好统一UTF-8. -- /* * To change this license header, choose Lic ...

  9. SET FMTONLY ON

    有时候在执行SQL查询语句时,仅仅需要知道检索的元数据,而不是具体的数据行,可以设置SET FMTONLY ON. SET FMTONLY只将元数据返回给客户端. 语法SET FMTONLY { ON ...

  10. SpringBoot使用redis缓存List

    一.概述 最近在做性能优化,之前有一个业务是这样实现的: 1.温度报警后第三方通讯管理机直接把报警信息保存到数据库: 2.我们在数据库中添加触发器,(BEFORE INSERT)根据这条报警信息处理业 ...