美文网首页
兄弟组件数据传递

兄弟组件数据传递

作者: 悄敲 | 来源:发表于2019-02-24 22:22 被阅读0次

    在用Vue仿去哪儿网app的项目中,在城市选择页面有一个功能,点击右侧字母,相应拼音首字母为所点击字母的城市子列表滚动到显示区域。这该如何实现呢?

(1)问题情景:页面如图1,其中的城市显示列表(“当前城市”,“热门城市”,“字母开头城市子列表”)均由一个名为 List.vue 的子组件构造,而右侧纵列字母则有 Alphabet.vue 子组件构造,这两个子组件的父组件为 City.vue.


图一  城市选择页面

(2)解决方案:这里涉及兄弟组件间的传值,Alphabet子组件先向父组件City.vue传值, City.Vue 再向List.vue子组件传值。(这里传递的值就是页面右侧被点击的字母,数据格式为String),相关代码如下:

图2-1  Alphabet子组件中绑定字母(页面上是li 元素)点击事件
图2-2  Alphabet子组件向外发送名为change的事件   图2-3    City.vue父组件中对Alphabet子组件中的change事件进行监听
图2-4    City.vue父组件中对监听到的change事件进行处理

 Note:  letter定义在City.vue中的data中,初始化为 letter : ""。

图2-5    List.vue子组件中的字母开头城市子列表的页面构造

Note: 在字母开头城市子列表 div 标签上设置了 :ref="key"  (此处key为图一中相同拼音首字母城市的相应大写字母,如A),可以借此获取特定dom元素。

图2-6    List.vue子组件使用watch监听letter

Note:   this.scroll.scrollToElement(element)会将element对应的dom区域滚动至页面显示区域,如图3所示。

图3  实现效果

总结:Vue中的兄弟组件(A和B)数据传递并不是直接进行的,而是以共同的父组件(C)为中介,具体过程是:子组件A向父组件C发送事件"change"(数据在emit参数中),父组件C对子组件A进行"change"事件监听,监听到该事件后向子组件B传递数据。

相关文章

  • React项目组件间通讯方式简介

    一、父组件给子组件传递数据 props 二、子组件给父组件传递数据 通过函数调用的方式 三、兄弟组件传递数据 pu...

  • Vue项目=====组件之间通信的几种方式

    一、父组件给子组件传递数据 props 二、子组件给父组件传递数据通过$emit函数调用的方式 三、兄弟组件(任何...

  • vue.js 兄弟组件传值

    vue兄弟组件如何传值?兄弟组件如何相互操作组件里面的函数? 1、兄弟之间传递数据需要借助于事件车,通过事件车的方...

  • VUE进阶 - $on和$emit的用法

    使用场景:兄弟组件之间相互传递数据 先上简单的用法,一个页面上使用 兄弟组件传值

  • 组件通信

    组件关系可以分为父子组件通信、兄弟组件通信、跨级组件通信 自定义事件--子组件给父组件传递数据 子组件$emit(...

  • vue父子组件以及非父子组件的通信

    1.父组件传递数据给子组件 通过props传递数据 2.子组件传递数据给父组件 通过$emit传递父组件数据 子组...

  • Vue中组件间传值总结 ------ 2020-05-17

    父子组件间传递数据的方式 1、父组件向子组件传递数据 2、子组件向父组件传递数据 3、父子组件相互传递同一数据的两...

  • Vue 组件数据传递

    Vue 组件数据传递 父组件->子组件 父组件到子组件的数据通过 props 传递 在父组件注册子组件,传递数据到...

  • Vue组件详解---组件通信

    组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信 自定义事件—子组件给父组件传递数据 使用v­-on 除了监...

  • Vue组件间数据传递

    前言 总结vue组件间的数据传递 路由传参 父组件传递数据给子组件---props 子组件传递数据给父组件---$...

网友评论

      本文标题:兄弟组件数据传递

      本文链接:https://www.haomeiwen.com/subject/nfciyqtx.html