字母表点击切换到对应栏目没反应

来源:8-6 Vue项目城市选择页 - 兄弟组件数据传递

wayliu

2020-05-05

List.vue

这个坑好像挺多人碰到的,请老师尽快解答。

<template>
	<div class="list" ref="wrapper">
		<div>
			<div class="area">
				<div class="titel border-topbottom">当前城市</div>
				<div class="button-list">
					<div class="button-wrapper">
						<div class="button">北京</div>
					</div>
				</div>
			</div>
			<div class="area">
				<div class="titel border-topbottom">热门城市</div>
				<div class="button-list">
					<div class="button-wrapper" v-for="item of hot" :key="item.id">
						<div class="button">{{item.name}}</div>
					</div>
				</div>
			</div>
			<div 
			class="area" 
			v-for="(item, key) of cities" 
			:key="key"
			:ref="key"
			>
				<div class="titel border-topbottom">{{key}}</div>
				<div class="item-list">
					<div 
					class="item border-bottom"
					v-for="innerItem of item"
					:key="innerItem.id"
					>{{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
	},
	mounted () {
		this.scroll=new Bscroll(this.$refs.wrapper)
	},
	watch: {
		letter () {
			if (this.letter) {
				console.log(this.letter)
				const element = this.$refs[this.letter][0]
				console.log(element)
				this.scroll.scrollToElement(element)
			}
		}
	}
}
</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
	 button:0
	 .titel
	  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 0
	    text-align :center
	    border :.02rem solid #ccc
	    border-radius :.06rem
	 .item-list
	  .item
	   line-height :.76rem
	   padding :.2rem
</style>

监听部分
在console.log(this.letter)能够获取到对应的字母,console.log(element)能狗获取到对应的dom。
点击了A:
图片描述
图片描述
控制台显示应该是拿到了A的对应的栏目,但是不知道为什么没有跳转?

写回答

2回答

张小菜哇

2020-05-06

我已经实现,将scroll进行保存

//img.mukewang.com/szimg/5eb266b4095161d518091588.jpg


0
0

wayliu

提问者

2020-05-05

???

0
1
Dell
new Bscroll(this.$refs.wrapper, { click: true })
2020-05-10
共1条回复

Vue2.5-2.6-3.0开发去哪儿网App 零基础入门到实战

课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握

10726 学习 · 8205 问题

查看课程