vue实现点击、滑动右侧字母对应各个城市
1.字母组件给父组件传递当前点击的字母值
- @click="handleLetterClick" //绑定事件
- handleLetterClick (e) { //向上传递参数
- this.$emit('change',e.target.innerText)
- },
2.父组件接收字母组件传递的值
- <city-alphabet :cities="cities" @change="handleLetterChange"></city-alphabet>
- //先定义一个空的接收
- data () {
- return {
- letter:''
- }
- },
- //将接收的值传给letter
- handleLetterChange (letter){
- this.letter = letter;
- }
- //传给对应的城市组件
- <city-list :letter="letter"></city-list>
- //这里需要better-scroll插件
- import Bscroll from 'better-scroll'
- //绑定需要插件的地方
- mounted () {
- this.scroll = new Bscroll(this.$refs.wrapper);
- },
- //城市组件监听letter的变化,实现跳转
- watch:{
- letter() {
- if(this.letter){
- const element=this.$refs[this.letter][0];
- this.scroll.scrollToElement(element);
- }
- }
- }
3.实现滑动跳转城市
- //绑定滑动事件
- <li v-for="item of letters" :key="item" :ref="item"
- @touchstart="handleTouchStart"
- @touchmove="handleTouchMove"
- @touchend="handleTouchEnd"
- @click="handleLetterClick"
- >{{item}}</li>
- //用计算属性来存储(cities)letters
- computed:{
- letters(){
- const letters=[];
- for(let i in this.cities){
- letters.push(i);
- }
- return letters;
- }
- },
- //data
- data (){
- return {
- touchStatus:false,
- startY:0,
- timer:null
- }
- },
- //为了让性能提高,startY,就计算一次
- updated(){
- //A元素对应顶部的高度
- this.startY=this.$refs['A'][0].offsetTop;
- },
- handleTouchStart(){
- this.touchStatus=true;
- },
- handleTouchMove(e){
- if(this.touchStatus){
- // 函数节流
- if(this.timer){
- clearTimeout(this.timer)
- }
- this.timer=setTimeout(() => {
- // 当前手指到最顶部的高度-头部高度
- const touchY = e.touches[0].clientY - 79;
- //(touchY - startY)手指到A顶部的高度/20(每个字母的高度)=当前第几个字母
- const index = Math.floor((touchY - this.startY) / 20);
- if(index >= 0 && index < this.letters.length){
- this.$emit('change',this.letters[index]);
- }
- },16);
- }
- },
- handleTouchEnd(){
- this.touchStatus=false;
- }
vue实现点击、滑动右侧字母对应各个城市的更多相关文章
- 自己定义View----点击滑动选择字母列表
因为项目须要,也不想使用网上的写好的控件,于是作死的自己定义了一个控件.特此记录下成功.效果例如以下: 首先须要把全部的字母绘制出来: private static String letters[] ...
- day 86 Vue学习之八geetest滑动验证
Vue学习之八geetest滑动验证 本节目录 一 geetest前端web中使用 二 xxx 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 geetest前端web ...
- vue 如何点击按钮返回上一页
1,vue 如何点击按钮返回上一页呢? 这是vue挂载的范围html代码 <div @click="goOff()">返回</div> 下面是点击返回的方法 ...
- vue验证码点击更新
vue验证码点击更新 不说啥,直接贴代码 html: <img class="captcha" @click="editCaptcha" :src=&qu ...
- vue实现点击图标,图标在2s中完成旋转
<!-- 点击 vue实现点击图标,图标在2s中完成旋转 1==>如何让它在2s内完成旋转 使用动画 transform: rotate(-180deg); 动画的运动状态 transit ...
- vue 的点击事件怎么获取当前点击的元素
手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 首先 vue的点击事件 是用 @cl ...
- Vue 仿B站滑动导航
仿照B站制作的滑动导航功能,进行了部分优化,例如可定制默认选中元素,并将选中元素居中显示,可动态更改数据,可定制回调函数取的下标和选中元素内容,可根据需求制作N级联动 已开发成插件,使用方法与源码请前 ...
- day 88 Vue学习之八geetest滑动验证
本节目录 一 geetest前端web中使用 二 xxx 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 geetest前端web中使用 下载gt文件,官网地址,下面我 ...
- VUE中使用geetest滑动验证码
一,准备工作:服务端部署 下载文件gt.gs: https://github.com/GeeTeam/gt3-python-sdk 需要说明的是这里的gt.js文件,它用于加载对应的验证JS库. 1. ...
随机推荐
- zookeeper 图形化的客户端工具:ZooInspector
查看Zookeeper中的数据,我们可以通过ZkCli.sh命令客户端查看,但是不太直观,因为Zookeeper本身数据是以树型结构存储组织的, 今天推荐一个实用的界面操作工具ZooInspector ...
- 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 ...
- makedepend: command not found(转)
makedepend: command not found 解决方案: 修改Makefile MAKEDEPEND=$(CC) -M 参考: When I set CROSS_COMPILE, `MA ...
- py-day1-5 python 分割 、 字母大小转换
# partition() 分割为3段 从左往右遇见的第一个开始 test = 'bassaiwoll' v = test.partition('s') print(v) ('ba', 's', 's ...
- Digispark红外接收器
一.红外协议之NEC协议原理 NEC协议格式: 首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是 ...
- 阅读<Video Timing Controller>笔记
阅读<Video Timing Controller>笔记 1.Video Timing Controller Block Diagram 2.Example Video Timing ...
- XE5 Android 开发数据访问server端[转]
建立一个webservices stand-alone vcl application 作为手机访问的服务端 1.new->other->webservices 2.选择 stand-a ...
- java rsa 公钥加密
注意JAVA 的STRING .getBytes() 默认取的是操作系统的编码,最好统一UTF-8. -- /* * To change this license header, choose Lic ...
- SET FMTONLY ON
有时候在执行SQL查询语句时,仅仅需要知道检索的元数据,而不是具体的数据行,可以设置SET FMTONLY ON. SET FMTONLY只将元数据返回给客户端. 语法SET FMTONLY { ON ...
- SpringBoot使用redis缓存List
一.概述 最近在做性能优化,之前有一个业务是这样实现的: 1.温度报警后第三方通讯管理机直接把报警信息保存到数据库: 2.我们在数据库中添加触发器,(BEFORE INSERT)根据这条报警信息处理业 ...