组件是Vue知识体系中最重要的一部分之一,父子组件由于作用域的不同,无法直接对对方的数据进行操作。它们之间的数据传递都是通过中间介质进行的,父组件给子组件传值是通过props属性,而子组件给父组件传值是通过自定义事件。

1.父组件向子组件传值

     <div id="app">
<parent></parent>
</div> <template id="parent">
  <div>
    <div style="border:1px solid red;width: 300px;">
      <h1>父组件</h1>
      <p>{{parentMsg}}</p>
    </div>
    <child :get-parent="parentMsg"></child>
  </div>
</template> <template id="child">
  <div>
    <h1>子组件</h1>
    <p>{{childMsg}}</p>
<button @click="printParentMsg()">父组件信息</button>
  </div>
</template> <script> var child={
    data(){
      return {
        childMsg:"我是子组件数据"
      }
    },
    template:"#child",
props: ['getParent'],
methods: {
printParentMsg(){
alert('父组件信息:' + this.getParent);
}
}
  };   var parent={     data(){
      return {
        parentMsg:"我是父组件的数据"
      }
    },     components:{
      'child':child
    }, template: '#parent'
}   new Vue({
    el:"#app",
    components:{
      'parent':parent
    }
  }); </script>

具体方法:

1.子组件在props中创建一个属性,用来接收父组件传来的值

2.父组件中注册子组件

3.在父组件模板中的子组件标签添加对应于子组件props中的属性

4.把需要传递的值赋给上一步子组件标签创建的属性(这里要注意的是props中的属性用驼峰命名法,标签中的属性用横杠命名法)

2.子组件向父组件传值

     <div id="app">
<parent></parent>
</div> <template id="parent">
  <div>
    <div style="border:1px solid red;width: 300px;">
      <h1>父组件</h1>
      <p>{{parentMsg}}</p>
    </div>
    <child v-on:receive-msg="handleMsg"></child>
  </div>
</template> <template id="child">
  <div>
    <h1>子组件</h1>
    <p>{{childMsg}}</p>
<button @click="sendToParent">传递信息</button>
  </div>
</template> <script> var child={
    data(){
      return {
        childMsg:"我是子组件数据"
      }
    },
    template:"#child",
props: ['getParent'],
methods: {
sendToParent(){
console.log('sendToparent')
this.$emit("receive-msg", "已经收到子组件传来的消息");
}
}
  };   var parent={     data(){
      return {
        parentMsg:"我是父组件的数据"
      }
    },     components:{
      'child':child
    }, template: '#parent', methods: {
handleMsg: function(msg){
console.log('handleMsg')
alert(msg);
}
}
}   new Vue({
    el:"#app",
    components:{
      'parent':parent
    }
  }); </script>

具体方法:

1.子组件在某种条件下触发一个自定义事件

2.该自定义事件需要挂载在父组件的子组件标签上,让父组件可以监听到这个自定义事件

3.将需要传的值放在$emit方法的第二个参数上,该值将作为实参传递给响应自定义事件的方法

(注意!这里有个小坑:自定义事件貌似不支持驼峰命名法,改用横杠命名即可,否则会接收不到值)

Vue父子组件之间的相互通信的更多相关文章

  1. VUE 自定义组件之间的相互通信

    一.自定义组件 1.全局自定义组件 我们在var vm = new Vue({});的上面并列写上Vue.component('自定义组件名',{组件对象});来完成全局自定义组件的声明.示例代码如下 ...

  2. 【转】vue父子组件之间的通信

    vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不同情况下又各有不同.最常见的就是父组件为控制组件子组件为视图组件.父组件传递数据给子组件使 ...

  3. VUE 父子组件之间通信传值 props和 $emit

    1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件          <div id="app" >               <tr ...

  4. 浅谈vue父子组件之间的传值

    前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ...

  5. vue父子组件之间传值

    vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种 ...

  6. vue父子组件之间互相获取data值&调用方法(非props)

    vue 子组件调用父组件方法&数据 vue有$parent这么一个属性,在子组件中就能拿到父组件的数据 this.$parent.xxx 就能调用父组件的方法 this.$parent.xxx ...

  7. vue父子组件之间的通信

    利用props在子组件接受父组件传过来的值1.父组件parentComp.vue <template> <childComp :fromParentToChild="fro ...

  8. Vue父子组件之间通信

    1.父 -> 子.通过props //father.vue <template> <div id="father"> <div><l ...

  9. vue父子组件之间相互传值

    1. 子组件使用父组件方法,并向父组件传值 子组件代码 <template> <div class="menu"> <div class=" ...

随机推荐

  1. 【学习总结】Git学习-参考廖雪峰老师教程-总

    公元2018-10-21 实验室台式机 win7 64位 参考教程: 廖雪峰Git教程 其他资料:Git-book 北大一只总结的笔记,最终整理的时候可以参考:Git笔记 评论区看到的另一个人,总结在 ...

  2. java list map set array 转换

    1.list转set Set set = new HashSet(new ArrayList()); 2.set转list List list = new ArrayList(new HashSet( ...

  3. 使用axios post 提交数据,后台获取不到

    https://www.cnblogs.com/yiyi17/p/9409249.html(copy https://www.cnblogs.com/loveyaxin/p/8385694.html( ...

  4. NOIP2001提高组复赛B 数的划分

    题目链接:https://ac.nowcoder.com/acm/contest/249/B 题目大意: 略 分析1(记忆化搜索): 方法为减而治之,把n划分成k份的答案就相当于每次把n分成a,b两个 ...

  5. 源码编译安装php7

    现在新启的项目都是采用php7了,无奈很多Linux发行版中还是php5 第三方php7源在自己本机上用用到无所谓,放到正式环境上还是有点不放心 其实编译安装也就几分钟,麻烦的是各种依赖 先删除老版本 ...

  6. 根据 Power BI Desktop(预览版)中的报表页创建工具提示

    根据 Power BI Desktop 中创建的报表页,可创建直观丰富的报表工具提示,这些提示在你将鼠标悬停在视觉对象上时显示. 通过创建用作工具提示的报表页,使自定义工具提示包含视觉对象.图像以及在 ...

  7. 解决win10隔几分钟自动黑屏睡眠的方法

    来源:win10总是很快自动休眠怎么解决? - 风格不空格的回答 - 知乎 https://www.zhihu.com/question/39263412/answer/87430653 1.运行注册 ...

  8. mysql 设置允许重试,批量更新

    jdbc:mysql://ip:port/base?allowMultiQueries=true&autoReconnect=true 在mybatis中批量更新 需要在mysql的url上设 ...

  9. elasticsearch篇之mapping

    2018年05月17日 18:01:37 lyzkks 阅读数:444更多 个人分类: Elastic stack   版权声明:文章内容来自于网络和博主自身学习体会,转载请注明出处,欢迎留言大家一起 ...

  10. COGS 2396 2397 [HZOI 2015]有标号的强连通图计数

    题意:求n个点有向图其中SCC是一个的方案数 考虑求出若干个不连通的每个连通块都是SCC方案数然后再怎么做一做.(但是这里不能用Ln,因为推不出来) 设$f_n$为答案, $g_n$为n个点的有向图, ...