vue.js中用v-for遍历出的li中的@click事件在移动端无效better-scroll
应该是使用了better-scroll的原因,默认它会阻止touch事件。所以在配置中需要加上click: true// better-scroll的原因,默认它会阻止touch事件。所以在配置中需要加上click: true// myScroll = newIScroll('#wrapper', { mouseWheel: true, click: true, tap: true })...
·
应该是使用了better-scroll的原因,默认它会阻止touch事件。所以在配置中需要加上click: true
// better-scroll的原因,默认它会阻止touch事件。所以在配置中需要加上click: true
// myScroll = newIScroll('#wrapper', { mouseWheel: true, click: true, tap: true });
this.scroll = new Bscroll(this.$refs.wrapper, { mouseWheel: true, click: true, tap: true })
具体的配置还可以查看 https://github.com/ustbhuangyi/better-scroll
<template>
<div class="list" ref="wrapper">
<div>
<div class="area">
<div class="title border-topbottom">当前城市</div>
<div class="button-list">
<div class="button-wrapper">
<div class="button">{{this.$store.state.city}}</div>
</div>
</div>
</div>
<div class="area">
<div class="title border-topbottom">热门城市</div>
<div class="button-list">
<div
class="button-wrapper"
v-for="item of hot"
:key="item.id"
@click="handleCityClick(item.name)"
>
<div class="button">{{item.name}}</div>
</div>
</div>
</div>
<div
class="area"
v-for="(item,key) of cities"
:key="key"
:ref="key"
>
<div class="title border-topbottom">{{key}}</div>
<div
class="item-list"
v-for="innerItem of item"
:key="innerItem.id"
@click="handleCityClick(innerItem.name)"
>
<div class="item border-bottom">{{innerItem.name}}</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Bscroll from 'better-scroll'
export default {
name: 'CityList',
props: {
hot: Array,
cities: Object,
letter: String
},
methods: {
handleCityClick (city) {
// this.$store.dispatch('changeCity', city)
this.$store.commit('changeCity', city) // 数据少可以直接调用commit对mutations传数据
this.$router.push('/') // 回到首页
}
},
// 侦听器,数据发生变化,自动触发
watch: {
letter () {
// console.log(this.letter)
if (this.letter) {
// 字符串去空格aa.replace(/\s/g,'')
const element = this.$refs[this.letter.replace(/\s/g, '')][0]
this.scroll.scrollToElement(element)
}
}
},
// 生命周期函数mounted,在页面DOM挂载完之后执行
mounted () {
// better-scroll的原因,默认它会阻止touch事件。所以在配置中需要加上click: true
// myScroll = newIScroll('#wrapper', { mouseWheel: true, click: true, tap: true });
this.scroll = new Bscroll(this.$refs.wrapper, { mouseWheel: true, click: true, tap: true })
}
}
</script>
<style lang="stylus" scoped>
@import '~styles/varibles.styl'
.border-topbottom
&:before
border-color:#ccc
&:after
border-color:#ccc
.border-bottom
&:before
border-color:#ccc
.list
overflow:hidden
position:absolute
top:1.58rem
left:0
right:0
bottom:0
.title
line-height:.54rem
background:#eee
padding-left:.2rem
color:#666
font-size:.26rem
.button-list
overflow:hidden
padding:.1rem .6rem .1rem .1rem
.button-wrapper
float:left
width:33.33%
.button
margin:.1rem
padding:.1rem
text-align:center
border:.02rem solid #ccc
border-radius:.06rem
.item-list
.item
line-height:.76rem
padding-left:.2rem
</style>
更多推荐
已为社区贡献7条内容
所有评论(0)