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 Java API调用
引入zookeeper-3.4.11.jar public class ZooKeeperTest implements Watcher{ //public final static String z ...
- sql日期操作
日期格式化函数 ), ): :57AM ), ): ), ): ), ): ), ): ), ): ), ): ), ): , ), ): :: ), ): :::827AM ), ): ), ): ...
- golang 字符串统计
golang内建只认utf8 如果传递的字符串里含有汉字什么的,最好使用 utf8.RuneCountInString() 统计 字符串统计几种方法: - 使用 bytes.Count() 统计- 使 ...
- 编写dll时的内存分配策略
前一篇文章介绍了为何要共用内存管理器,有人要问可不可以在编写dll时更通用一些,可以兼顾其它编译器(如果是其它编译器的话,Delphi写的dll不能与其它语言共用内存管理器),采用一定的策略来避免在d ...
- IK分词器的使用
1.下载 根据自己的版本进行下载 https://github.com/medcl/elasticsearch-analysis-ik/releases wget https://github.com ...
- T-SQL like charindex patindex 性能比较
事实上在网上可以找到很多这方面的资料,在这边就不多说了~主要观点在性能方面还是比较倾向于charindex,下面就测试下: 测试环境:共50批次,每批次50000数据,测试总共250万数据. 一.li ...
- Fiddler的学习之路
Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 . 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试 ...
- 【Https】Spring RestTemplete支持Https安全请求
实现步骤 Step1: 自定义ClientHttpRequestFactory package com.example.demo.https; import org.springframework.h ...
- 安装spy-debugger查看前端日志
有时需要查看前端页面日志,但是前端同学有时忘记开启vConsole.为了调试方便,最好在本地可以查看前端日志,做到一劳永逸. 1.安装node 网上搜教程 2.安装spy-debugger sudo ...
- java中,什么是方法的重载?需要满足什么条件?两同三不同指的什么?
方法重载需要满足以下几个条件: 在同一个类中 方法的名称相同 参数列表不同 方法重载有以下特点: 与访问修饰符和返回值类型无关 与异常无关 方法重载的作用: 传递不同的参数实现相同的效果 所谓两同,就 ...