兄弟组件之间联动--vue开发app点击字母展示地区列表-创新互联

兄弟组件之间联动--vue开发app点击字母展示地区列表

成都创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目成都做网站、成都网站建设、成都外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元临城做网站,已为上家服务,为临城各地企业和个人服务,联系电话:18980820575

下图这种地区搜索方式在很多app中都很常见,今天就使用vue框架中的 better-scroll 第三方包来实现页面滚动和点击侧边栏字母该字母开头的地区列表置顶功能。

来源:凯哥Java(kaigejava)

兄弟组件之间联动--vue开发app点击字母展示地区列表

1、A子组件通过使用 this.$emit(事件名字,事件携带内容) 向外触发事件

首先,在组件每个字母元素上绑定事件,在该事件中向外触发事件,并将值传递出去:

methods:{

  handleLetterClick(e){

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

  }

}

2、父组件接收A组件传过来的事件,并通过属性来向B组件传值

因为组件传递过来的是单个字符串,所以,先在data中定义一个属性letter来接收这个值;

联系凯哥-》凯哥Java(kaigejava)

或凯哥个人博客:www.kaigejava.com

悄悄说下,凯哥个人博客可以私信凯哥哦~

并在父组件模板中的组件中定义传递的方法@change="handleLetterChange"用来获取传递的值;

将letter属性传递给另一个子组件

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" 

:key="key"

:ref="key"

>

  ...

props:{

  letter:String

},

watch:{

  letter(){

  if(this.letter){

  // scrollToElement里只接受单个DOM元素,不接收数组

  //因为上面的div元素是数组渲染出来的,所以这里this.$refs得到的是数组

  const element = this.$refs[this.letter][0]

  this.scroll.scrollToElement(element)

  }

  }

}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:兄弟组件之间联动--vue开发app点击字母展示地区列表-创新互联
网站网址:http://pwwzsj.com/article/hesog.html