1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值

Child组件

<template>
  <span>{{message}}</span>
</template>
<script>
export default {
  props: ['message'],
  data () {
    return {}
  }
}
</script>

Father组件

<template>
<div>
<child message='via props'></child>
</div>
</template>
<script>
import child from './child'
export default {
components: {
child
}
}
</script>

运行结果

2.非Prop传递数据

Child

<template>
  <span @click="getData()">{{message}}</span>
</template>
<script>
export default {
  props: ['message'],
  data () {
return {}
},
  methods: {
    getData () {
      console.log(this.$el.attributes.noprop.value)
    }
  }
}
</script>

Father

<template>
  <div>
    <child noProp='not via props' message='via props'></child>
  </div>
</template>
<script>
import child from './child'
export default {
  components: {
    child
  }
}
</script>

运行结果

 3.v-on v-emit 子组件传给父组件

Child

<template>
  <span @click="emitTest()">{{message}}</span>
</template>
<script>
export default {
  props: ['message'],
  data () {
    return {}
  },
  methods: {
    emitTest () {
      console.log('This is children"s message')
      this.$emit('onTest', '123')
    }
  }
} </script>

Father

<template>
  <div>
    <child v-on:onTest='onTestFunc' message='via props'></child>
  </div>
</template>
<script>
import child from './child'
export default {
  components: {
    child
  },
  methods: {
    onTestFunc (id) {
      console.log('This is father"s message' + id)
    }
  }
}
</script>

运行结果

4.空vue实例作为事件总线,非父子组件通信

5.Vuex

https://cn.vuejs.org/v2/guide/state-management.html

6.作用域插槽

child

<template>
  <div>
    <slot message="This is a children message"></slot>
  </div>
</template>
<script>
export default {
}
</script>

Father

<template>
  <div>
    <child>
      <template scope="scope">{{scope.message}}</template>
    </child>
  </div>
</template>
<script>
import child from './child'
export default {
  components: {
    child
  }
}
</script>

运行结果

7.$parent,$children

$children,即在父组件中,可以利用this.$children[x]来访问子组件的data属性,如果你觉得按数组当有多个子组件时难以维护,也可以用$ref,

首先你的给子组件做标记。demo :<firstchild ref="one"></firstchild>

      然后在父组件中,通过this.$refs.one就可以访问了这个自组件了,包括访问自组件的data里面的数据,调用它的函数

Child

<template>
  <div></div>
</template>
<script>
export default {
  data () {
    return {
      childMsg: 'this is a child msg'
    }
  }
}
</script>

Father

<template>
  <div>
    <child></child>
  </div>
</template>
<script>
import child from './child'
export default {
  components: {
    child
  },
  mounted () {
    console.log(this.$children[0].childMsg)
}
}
</script>

$parent

Child

<template>
  <div></div>
</template>
<script>
export default {
  mounted () {
    console.log(this.$parent.fatherMsg)
  }
}
</script>

Father

<template>
  <div>
    <child></child>
  </div>
</template>
<script>
import child from './child'
export default {
  components: {
    child
  },
  data () {
    return {
      fatherMsg: 'this is a fatherMsg'
    }
  }
}
</script>

VUE 组件通信总结的更多相关文章

  1. vue组件通信的几种方式

    最近用vue开发项目,记录一下vue组件间通信几种方式 第一种,父子组件通信 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue 2.Child ...

  2. vue 组件通信

    组件 组件之间的数据是单向绑定的. 父组件向子组件通信 是通过子组件定义的props属性来实现.通过props定义变量与变量类型和验证方式. props简化定义 在简化定义中,变量是以数组的方式定义. ...

  3. vue组件通信那些事儿

    一.说说通信 通信,简言之,交流信息.交流结束后,把信息放在哪里,这是一个值得思考的问题.vue中保存状态有2种方式,组件内的data属性和组件外的vuex的state属性. 1.用state的场景 ...

  4. vue组件通信&&v兄弟组件通信eventbus遇到的问题(多次触发、第一次不触发)

    组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的 (vuex以后再说). 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <templ ...

  5. vue 组件通信传值

    父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...

  6. Vue组件通信之Bus

    关于组件通信我相信小伙伴们肯定也都很熟悉,就不多说了,对组件通信还不熟悉的小伙伴移步这里. 在vue2.0中 $dispatch 和 $broadcast 已经被弃用.官方文档中给出的解释是: 因为基 ...

  7. Vue组件通信的几种方法

    上一节说到,vue.js是允许子组件通过props接受父组件的信息,但是不允许父组件通过props接受子组件的信息 1. $emit()和on 当子组件需要向父组件传递数据时,就要用到自定义事件. 使 ...

  8. vue组件通信之父子组件通信

    准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html  vue 脚手架安装及新建项目 ...

  9. vue组件通信之非父子组件通信

    什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit  触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on  监听当前实例上的自定义事件.事件可以 ...

随机推荐

  1. Django 执行单独脚本及SyntaxError缩进报错解决

    有时候会碰到这样的场景,对于一些业务升级,我需要把数据库数据做些处理,同时又想以 Django 项目的环境变量执行脚本,这个时候使用 python 脚本是再适合不过的手段了. 注意:在pycharm里 ...

  2. js every some 遍历函数理解

    1.every let arr = [0, 1, 2, 3, 4, 5]; let result = arr.every((item, index) => { return item >= ...

  3. css格式比较及选择器类型总结

    在前端入门的前三天把网页制作过程中常用的一些标签和属性都认识和练习了一遍,能够做出简单模块的框架.就像老师说的网页制作就像建一栋大楼,html是砖和水泥,css是精装,js是完善各个功能.现在就开始进 ...

  4. ansible 关闭ssh首次连接时提示

    关闭ssh首次连接时提示. 修改/etc/ansible/ansible.cfg配置文件 方法一:(推荐,配置文件中存在) host_key_checking = False 方法二: ssh_arg ...

  5. 【腾讯Bugly干货分享】WebSocket 浅析

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/7aXMdnajINt0C5dcJy2USg 前言 在W ...

  6. 一次艰难debug的反思

    已经很久没有遇到如此顽固的bug了,总共耗费了我近1个礼拜的时间.期间的种种冲突,个人崩溃,最终解决方案的形成,到回过头来的反思,实在有太多值得梳理的东西. 从结果上来讲,这是个人js基础极端薄弱的集 ...

  7. 逆水行舟 —— MyBatis

    第一轮总结性笔记 这是一个很漫长的过程,我买了套课程,将在日后记录学习笔记,取名为逆水行舟系列 MyBatis的基础 根据MyBatis的官方介绍: 整个测试项目结构如下:使用Maven架构项目 po ...

  8. FFmpeg开发实战(一):FFmpeg 打印日志

    在Visual Studio 开发(二):VS 2017配置FFmpeg开发环境一文中,我们配置好了FFmpeg的开发环境,下面我们开始边实战,边学习FFmpeg. 首先,我们要学习的就是FFmpeg ...

  9. Javascript高级编程学习笔记(41)—— DOM(7)DocumentFragment类型

    DocumentFragment类型 除开昨天我们了解的两种不常用的类型之外 今天我们要介绍的两种类型可以说使用频率不输于前面最常用的几种元素类型 首先就是DocumentFragment类型 有些小 ...

  10. Javascript高级编程学习笔记(34)—— 客户端检测(3)用户代理检测

    用户代理检测 前面的文章介绍的是如何检测浏览器对某一功能的支持情况 但是在实践中我们有些时候免不了需要知道用户到底是用的什么浏览器对我们的站点进行访问 这也是统计用户行为的一部分 用户代理检测这种方式 ...