组件之间的通讯分为三种 父给子传 子给父传 兄弟组件之间的通讯

1 父组件给子组件传值

子组件嵌套在父组件内部,父组件给子组件传递一个标识,在子组件内部用props接收,子组件在模板里可以通过{{}}的形式进行使用。如果父组件给子组件传递的标识中含有—,子组件在接收时采用驼峰式接收。

  • 父组件调用子组件的地方,
  • 添加自定义属性,属性名随便定义(但是不要定义id,class等)
  • 属性值为你需要传递的值(这个值可以是变量,如果是变量则使用绑定属性)
  • 定义子组件的地方,
  • 添加一个选项props,它是一个数组
  • 数组中的元素就是父元素提供的属性名
  • 那么,在子组件内部就可以直接使用父组件中定义的属性名,得到传递过来的属性值

2 子组件给父组件传值

  • 子组件給父组件传值(相对于父给子传麻烦一点,就如我们常说的人往高处走,水往低处流嘛,如果要想水井里面的水到达地面上来,最起码我们要有个管,这个管就是子组件给父组件传值的通道)
  • 子组件中,定义好一个事件标识,--- to-parent(相当于定义好了通道)(注意不要驼峰式命名)
  • 然后通过this.$emit('to-parent', 传递的值)
  • 父组件调用子组件的地方,执行这个事件,-----事件标识 to-parent
  • <v-son @to-parent="getMoney"></v-son>
  • 父组件实现方法getMoney,得到的值就是子组件传递给父组件的值

<template id="son">
<div>
我是孩子
<button @click="giveMoney(10000)">給父母打钱</button>
</div>
</template>
<template id="test">
<div>
<button @click='count++'>点击次数{{count}}</button>,
这个月孩子打了{{money}}元钱
<v-son @to-parent="getMoney"></v-son>
</div>
</template>

const Son = {
template: "#son",
data () {
return {
}
},
methods: {
giveMoney (val) {
// 你办了卡,把卡给了父母,你打钱
this.$emit('to-parent', val)
}
}
}
// 1、定义组件 ---- 组件的首字母必须大写
const Test = {
template: "#test",
data () {
return {
money: 0
}
},
methods:{
getMoney ( val ) {
this.money = val
}
},
components: {
'v-son': Son
}
}

3 非父子间的传值

非父子间的传值我个人觉得算是组件传值中最麻烦的一个,你说它难她也难,说它简单它也简单,我们只要定义好一方负责监听一方负责触发即可,他们之间相互传值依据的是中央事件总线,也就是new vue ,相当于飞机场中的塔台一样,都受它指挥。

$on 负责监听事件
$emit 负责触发事件 并传递参数如果有AB两个组件,如果A要给B传值,B就必须先监听A,使用起来比较麻烦。
事件的中央总线 (飞机塔台,邮差的故事)
在src下创建bus.js
var bus = new Vue() //中央事件总线
export default bus ;
假如有AB两个组件
在AB组件中引入bus中央事件总线

在A组件中发送一个信息给B组件

methods:{sendData(val){bus.$emit("A-B",val)}}
mounted(){bus.$on("B-A",function(val){console.log(val)
})
}
在B组件内接收
mounted(){bus.$on("A-B",function(val){console.log(val)bus.$emit("B-A",val)
})
}

如果AB组件有两次交互,就会有四次事件,如果做三次事件就会有六次事件
其实最麻烦的不是他们之间的传值,而是定义他们之间的事件名称,如果没有一套完备定义事件名称的规则,会无端的增加项目开发的周期,降低了开发效率,代码的耦合度会增加,维护性也低了。
所以不建议使用

可以在main.js中
vue.prototype.$bus = new Vue()在原型上扩展一个$bus
不用单创建bus文件
通过this.$bus.$on()进行使用

Vue 组件间的传值(通讯)相关推荐

  1. Vue组件间的传值五大场景,你造吗?

    摘要:组件是 vue.js最强大的功能之一,这五个组件间传值场景你了解吗? 本文分享自华为云社区<你了解Vue组件间传值五大场景吗?>,作者:北极光之夜. . 父组件向子组件传值: 比如有 ...

  2. vue组件间相互传值

    一般vue的组件之间的传值分为:父组件传子组件,子组件传父组件,任意组件之间传值. 1.父组件传子组件:(父组件通过v-bind(可以缩写为 :)发送,子组件通过props接收) //父组件中引入子组 ...

  3. vue组件间的传值方式及方法调用汇总

    1.传值 a.父组件传子组件 方法一: 父页面: <myReportContent v-if="contentState==1" :paramsProps='paramsPr ...

  4. vue 组件间的传值

    子向父传递参数 利用 子组件 中的 $meit 属性,注册事件,然后在 父组件 中,使用 $meit 定义的方法,在 父组件 中绑定事件:我们触发 子组件 的绑定 $meit 事件,就会 触发 父组件 ...

  5. Vue 组件间的通讯

    这一节我们一起看看 vue 中组件间的数据是如何传递的. 前面,我们已经初步建立了 vue 组件化的思想,知道如何创建组件.引入组件以及如何在组件里的一些功能.接下来,我们来学习怎么建立组件之间的连接 ...

  6. 初识 Vue(18)---(非父子组件间的传值)

    非父子组件间的传值 常一个应用会以一棵嵌套的组件树的形式来组织:将一个大组件进行拆分 下图这种情况的组件间传值(父子组件间传值) 方法:父组件通过 Props 向子组件传值,子组件通过事件触发向父组件 ...

  7. Vue组件间传值详解

    文章目录 1. 父组件向子组件传值 1.1 描述 1.2 props接收数据: 2. 子组件向父组件传值 3. 兄弟组件间传值 4. 事件总线 5. Ref 6. root/parent/childr ...

  8. vue组件间传值的六种方法

    一. vue组件间传值 1. 父组件向子组件进行传值props 父组件代码: <template><div>父组件:<input type="text" ...

  9. vue组件间通信六种方式

    vue组件间通信六种方式 组件之间的传值通信 组件之间的通讯分为三种:父传子.子传父.兄弟之间的通讯: props/$emit 父传子:主要是通过props来实现的 具体实现:父组件通过import引 ...

最新文章

  1. PostgreSQL on XFS 性能优化 - 1
  2. python六十一: __module__属性
  3. BibTex (.bib) 文件的凝视
  4. 关于jdk1.5之后的自定拆装箱
  5. ASP.NET Core 3.x控制IHostedService启动顺序浅探
  6. 本特利探头330104-00-02-10-02-00
  7. 应用程序正常初始化(0xc0150002)失败
  8. python习题20190130
  9. Python - 怎么将一个数字拆分成多个随机数字
  10. Adobe InDesign繁体字转简体字
  11. Docker网桥模式ping不通宿主机
  12. 分布式缓存 - memCached Voldemort
  13. 【平面图理论】平面图学习笔记
  14. 在线网校教育平台的开发,题库的搭建必不可少
  15. 周测三,Linux命令如下:
  16. CRC16校验的原理
  17. 我的爆款算法题解是如何创作的?
  18. 【文末赠书】大逆转悄然而至,人口如何影响我们的未来?
  19. 小伙开私人影院,裁掉员工玩套路,你见过哪个老板敢这么玩?
  20. MQTT协议-报文分析及网络客户端报文测试(MQTT报文连接阿里云上传数据+订阅数据)

热门文章

  1. Lanecat网猫案例小议
  2. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十八):kafka0.10.1 内置性能测试API用法示例...
  3. SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)...
  4. Check Point在Google Play上发现大批感染Judy恶意软件的应用
  5. C++两种单例(饿汉式,懒汉式)
  6. 目前常用的开源服务器端技术
  7. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
  8. 下载软件的临时文件思路和实现
  9. ubuntu或者fedora下编译淘宝tair key-value-db的开源内存数据库
  10. MyEclipse8.5默认工作区间修改