Vue2.0 心法 ==> 第二层:组件通信
来源:互联网 发布:c语言求出100以内素数 编辑:程序博客网 时间:2024/06/07 07:40
像指令这些东西比较简单,暂时没发现什么坑,就先不表,以后遇见坑了再加上。下面直接说组件之间的通信。
一、父组件传值到子组件
- 1 . props 传值
父组件
<template> <div class="routers"> <baidu-map father-msg="this is a string"></baidu-map> <!--字符串传值--> <baidu-map :father-msg="data"></baidu-map> <!--变量传值--> </div></template><script> import baiduMap from './baidu' export default { data () { return { data: 'this is a string', //data可以是字符串,对象,数组 } },</script>
子组件
<template> <div id="baiduMap" class="baiduMap"></div></template><script> export default { // 声明属性 props: { fatherMsg : [String, Object, Array] // 可以是字符串 对象 数组 }, data () { return { } },</script>
- 2 . 插槽 slot 传值
引用慕课网上fishenal老师的例子。
父组件
<template> <div class="routers"> <baidu-map father-msg="this is a string"> <p slot="header">这是header的内容</p> <p slot="footer">这是footer的内容</p> </baidu-map> </div></template><script> import baiduMap from './baidu' export default { data () { return { } },</script>
子组件
<template> <slot name="header">no header</slot> <p>这是中间的内容</p> <slot name="footer">no footer</slot></template><script> export default { data () { return { } },</script>
- 3 . 事件传递
有时候我们需要在 当父组件事件触发时,子组件才进行响应。需要用到事件广播。
父组件
<template> <div class="routers"> <!-- 使用ref属性注册子组件的引用信息 --> <baidu-map ref="baiduMapComp"></baidu-map> <button @click='fatherClick'>父组件中的点击</button> </div></template><script> import baiduMap from './baidu' export default { data () { return { info: 'this is message from father' } }, methods: { fatherClick () { // 向baiduMapComp中的getEquip函数中传递info this.$refs.baiduMapComp.getInfo(this.info); } }</script>
子组件
<template> <div id="baiduMap" class="baiduMap"></div></template><script> export default { data () { return { } }, methods: { getInfo (data) { // 父组件每次点击按钮,都会触发次函数 console.log(data); } }</script>
二、子组件传值到父组件
- $emit
父组件
<template> <div class="routers"> <!-- 自定义事件接收值 --> <baidu-map @getMsg = 'fatherGetMsg'></baidu-map> </div> </div></template><script> import baiduMap from './baidu' export default { data () { return { } }, methods: { fatherGetMsg (data) { console.log(data) } }</script>
子组件
<template> <div id="baiduMap" class="baiduMap"> <button @click = 'emitToFather'>发送到父组件</button> </div></template><script> export default { data () { return { data: 'this is message from son' } }, methods: { emitToFather () { this.$emit('getMsg', this.data); } }</script>
三、非父子关系组件间传值
使用一个空的 Vue 实例作为事件总线:
var bus = new Vue()// 触发组件 A 中的事件bus.$emit('id-selected', 1)// 在组件 B 创建的钩子中监听事件bus.$on('id-selected', function (id) { // ...})
阅读全文
0 0
- Vue2.0 心法 ==> 第二层:组件通信
- Vue2.0 心法 ==> 第一层:安装
- Vue2.0 心法 ==> 第四层:路由
- Vue2.0 心法 ==> 第五层:vue2.0 中的axios
- Vue2.0 心法 ==> 第六层:vue2.0 中使用sass语法
- Vue2.0 心法 ==> 第三层:keep-alive 缓存之坑
- vue2.0 组件通信
- Vue2.0 组件通信
- Vue2.0组件之间通信
- vue2.0中的组件通信
- Vue2.0组件之间通信
- Vue2.0组件之间通信
- Vue2.0组件通信(非Vuex)
- Vue2.0子父组件通信
- vue2.0--组件通信(非vuex法)
- Vue2.0 父子组件之间通信
- vue2.0父子组件通信(慕课网)
- vue2.0——管理组件通信
- mongodb对于时间的存储问题
- Python的基础知识2
- cafffe数据层及参数
- 网易2017秋招编程题:跳石板 [python]
- 详解JavaScript中localStorage使用要点
- Vue2.0 心法 ==> 第二层:组件通信
- Spring boot入门demo
- 7-7 社交网络图中结点的“重要性”计算(30 分)
- Linux的vi-文本编辑
- 前端代码合集
- ISH Shanghai & CIHE 2017上海国际供热通风空调及舒适家居系统展览会会刊(参展商名录)
- Java抽象与接口
- php 图片上传 文件上传 大小 限制
- 唯快不破:TIME_WAIT状态的快速恢复和重用