免费销售网站模板,php网站建设论文,灰色行业关键词推广,在线制作软件下图这种地区搜索方式在很多app中都很常见#xff0c;今天就使用vue框架中的 better-scroll 第三方包来实现页面滚动和点击侧边栏字母该字母开头的地区列表置顶功能。1、A子组件通过使用 this.$emit(事件名字#xff0c;事件携带内容) 向外触发事件首先#xff0c;在组件每个…下图这种地区搜索方式在很多app中都很常见今天就使用vue框架中的 better-scroll 第三方包来实现页面滚动和点击侧边栏字母该字母开头的地区列表置顶功能。1、A子组件通过使用 this.$emit(事件名字事件携带内容) 向外触发事件首先在组件每个字母元素上绑定事件在该事件中向外触发事件并将值传递出去 v-for(item,key) in city :keykey clickhandleLetterClick {{ key }}methods:{ handleLetterClick(e){ this.$emit(change,e.target.innerText) }}2、父组件接收A组件传过来的事件并通过属性来向B组件传值因为组件传递过来的是单个字符串所以先在data中定义一个属性letter来接收这个值并在父组件模板中的组件中定义传递的方法changehandleLetterChange用来获取传递的值将letter属性传递给另一个子组件 :citycities :hothotCities :letterletter :citycities changehandleLetterChange data(){ return{ letter: }},methods:{ handleLetterChange(letter){ this.letter letter }},3、B组件接收父组件传递过来的属性并通过watch监听参数的变化然后执行页面的滚动显示首先给每个地址列表区域元素加 ref better-scroll会根据ref给指定区域进行操作然后使用watch监听letter变化并使用better-scroll中的scrollToElement接口执行页面滚动v-for(item,key) in city :keykey:refkey ...props:{ letter:String},watch:{ letter(){ if(this.letter){ // scrollToElement里只接受单个DOM元素不接收数组 //因为上面的div元素是数组渲染出来的所以这里this.$refs得到的是数组 const element this.$refs[this.letter][0] this.scroll.scrollToElement(element) } }}