请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

2回答

提问者 花花公子2016 2021-04-12 14:32:02

<template>

  <ul class="list">

    <li

      class="item"

      v-for="item of letters"

      :key="item"

      :ref="item"

      @touchstart.prevent="handleTouchStart"

      @touchmove="handleTouchMove"

      @touchend="handleTouchEnd"

      @click="handleLetterClick"

    >

      {{item}}

    </li>

  </ul>

</template>


<script>

export default {

  name: 'CityAlphabet',

  props: {

    cities: Object

  },

  computed: {

    letters () {

      const letters = []

      for (let i in this.cities) {

        letters.push(i)

      }

      return letters

    }

  },

  data () {

    return {

      touchStatus: false,

      startY: 0,

      timer: null

    }

  },

  updated () {

    this.startY = this.$refs['A'][0].offsetTop

  },

  methods: {

    handleLetterClick (e) {

      this.$emit('change', e.target.innerText)

    },

    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

          const index = Math.floor((touchY - this.startY) / 20)

          if (index >= 0 && index < this.letters.length) {

            this.$emit('change', this.letters[index])

          }

        }, 8)

      }

    },

    handleTouchEnd () {

      this.touchStatus = false

    }

  }

}

</script>


<style scoped>

  @import '~styles/varibles.styl'

  .list

    display: flex

    flex-direction: column

    justify-content: center

    position: absolute

    top: 1.58rem

    right: 0

    bottom: 0

    width: .4rem

    .item

      line-height: .4rem

      text-align: center

      color: $bgColor

</style>


0 回复 有任何疑惑可以回复我~
Dell 2021-04-10 21:17:54

为什么要阻止touchstart 却又要用 click ?

0 回复 有任何疑惑可以回复我~
  • 提问者 花花公子2016 #1
    因为Alphabet组件里面老师用了touchstart .prevent 又用了click  导致点击字母触发不了点击事件
    回复 有任何疑惑可以回复我~ 2021-04-10 21:25:42
  • Dell 回复 提问者 花花公子2016 #2
    代码发上来我看下
    回复 有任何疑惑可以回复我~ 2021-04-10 21:26:18
  • 提问者 花花公子2016 回复 Dell #3
    发了,您看下
    回复 有任何疑惑可以回复我~ 2021-04-12 14:32:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信