父组件主动获取子组件的数据和方法

一、ref(但不能实时更新获取)

1.调用子组件的时候 定义一个ref

<child ref="headerChild"></child>

2.在父组件里面通过

this.$refs.headerChild.属性
this.$refs.headerChild.方法

二、$emit() (可以动态实时更新获取)

子组件中定义 this.$emit('data', times);
<child@data="getData"><child>
父组件中 getData(tiems) 得到;

子组件主动获取父组件的数据和方法

在子组件里面通过

this.$parent.属性
this.$parent.方法

演示代码:

//父组件 --- header.vue
<template>
<div id="header">
<child-template ref="childTemplate"></child-template> //注意:ref 的 childTemplate 是随便定义的,与下面的 this.$refs.childTemplate 保持一致
<button @click="getChild()">父组件获取子组件的数据和方法</button>
</div>
</template>
<script>
import Child from './child' // import 子组件 child.vue
export default {
data () {
return {
title:'我是父组件的数据'
}
},
methods: {
getChild (){
console.log(this.$refs.childTemplate.name) //this.$refs.childTemplate 获取子组件的数据,this.$refs 只能放在方法里面获取子组件的数据,而不能作为参数
},
run (){
console.log("我是父组件里面的方法")
}
},
components: {
'child-template': Child //和 import 的 对应
}
}
</script>
//子组件 --- child.vue
<template>
<div id="child">
<button @click="getParent()">获取父组件的数据和方法</button>
</div>
</template>
<script>
export default {
 name:"ChildTemplate",
data () {
return {
name:'我是子组件里面的数据'
}
},
methods:{
getParent(){
console.log(this.$parent.title) /*获取整个父组件*/
this.$parent.run()/*获取父组件的方法*/
}
},
props:['title','run','home'] /*通过props接收父组件传递过来的数据 */
}
</script>

或者子组件获取父组件的数据和方法,并且随着父组件实时更新数据(用到watch) 

//父组件 --- header.vue
<template>
<div id="header">
<child-template ref="childTemplate" :commentList = dataList></child-template> //注意:ref 的 childTemplate 是随便定义的,与下面的 this.$refs.childTemplate 保持一致 ;用v-bind 绑定子组件的 commentList ,将值 dataList 传给子组件
<button @click="getChild()">父组件获取子组件的数据和方法</button>
</div>
</template>
<script>
import Child from './child' // import 子组件 child.vue
export default {
data () {
return {
title:'我是父组件的数据',
      dataList:[{"id":1,"name":"liuqing"}]
}
},
methods: {
getChild (){
console.log(this.$refs.childTemplate.name) //this.$refs.childTemplate 获取子组件的数据,this.$refs 只能放在方法里面获取子组件的数据,而不能作为参数
},
run (){
console.log("我是父组件里面的方法")
}
},
components: {
'child-template': Child //和 import 的 对应
}
}
</script>
//子组件 --- child.vue
<template>
<div id="child">
<button @click="getParent()">获取父组件的数据和方法</button>
</div>
</template>
<script>
export default {
 name:"ChildTemplate",
 props:{
  commentList:{
    type:Array //获取的父组件的 commentList 是一个数组
  }
 },
data () {
return {
name:'我是子组件里面的数据'
}
},
 watch:{
  commentList:{
    handler(newValue,oldVlaue){
      console.log(newValue) //newVlaue 等于 获取父组件的 dataList 的值,并能随着父组件 dataList 的变化而实时变化
    },
    deep:true
  }
 },
methods:{ }
}
</script>

vue 的父组件和子组件互相获取数据和方法的更多相关文章

  1. vue中父级与子组件生命周期的先后顺序

    1.vue的生命周期 2.views/createrCustormer.vue为父级     <template>     <expressService />   </ ...

  2. 关于VUE调用父实例($parent) 根实例 中的数据和方法

    this.$parent或者 this.$root 在子组件中判断this.$parent获取的实例是不是父组件的实例 在子组件中console.log(this.$parent)  在父组件中con ...

  3. vue 父组件传递子组件事件

    在开发中,碰到一个需要从父组件传入方法,子组件点击触发,说白了就是,把方法传入给子组件调用 <el-col v-for='data in spreadFormat.icons' class=&q ...

  4. Vue中,父组件向子组件传值

    1:在src/components/child/文件夹下,创建一个名为:child.vue的子组件 2:在父组件中,设置好需要传递的数据 3:在App.vue中引入并注册子组件 4:通过v-bind属 ...

  5. VUE 父组件与子组件交互

    1. 概述 1.1 说明 在项目过程中,会有很多重复功能在多个页面中处理,此时则需要把这些重复的功能进行单独拎出,编写公用组件(控件)进行引用.在VUE中,组件是可复用的VUE实例,此时组件中的dat ...

  6. Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?

    原文:https://blog.csdn.net/zhouweixue_vivi/article/details/78550738 2017年11月16日 14:22:50 zhouweixue_vi ...

  7. Vue 组件&组件之间的通信 之 父组件向子组件传值

    父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:com-b要获取父组件dat ...

  8. vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值。

    vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值. vue 父组件与子组件相互通信 一.父组件给子组件传值 props 实现父组件向子组件传值. 1父组件里: ...

  9. Vue系列之 => 父组件向子组件传值

    父组件向子组件传递数据 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta c ...

  10. vue 父组件给子组件传值 Vue父组件给子组件传方法 Vue父组件把整个实例传给子组件

    Home.vue <template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> <v-header ...

随机推荐

  1. vue之后台管理系统遇到的几个痛点

    杂七杂八的一些日总结 1.vue(最)合理的处理表单提交和初始化表单数据显示的方式 对于表单处理,繁琐的一个地方就是当出现多个下拉选择的表单框的时候,我们需要进行多次将选择的文本去换对应的id值的操作 ...

  2. mac nginx 一些资料

    http://www.jianshu.com/p/918eb337a206 mac 的nginx 配置目录在/usr/local/etc/nginx 安装之前最好执行brew的update和upgra ...

  3. docker镜像文件的导入与导出(docker镜像迁移)

    1.查看镜像ID # docker images [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myto ...

  4. Postman模拟ajax请求 并模拟登陆

    2.设置header头 <span style="font-size:16px;">设置代理.cookie.X-Requested-With   注意 :X-Reque ...

  5. 2017.7月(关于vertical-align等)

    1.Jquery 可以使用$('.class',$object)的形式,$object是jQuery对象,在该对象的子元素中查找'.class' 2.line的问题,input和button作为inl ...

  6. Entity Framework执行原生SQL语句

    ExecuteSqlCommand为执行命令的接口, SqlQuery 为返回查询结果 1.Database.ExecuteSqlCommand 方法 (String, Object[]) 对数据库执 ...

  7. C#窗体嵌入SetParent的用法

    模块化的开发,将模块合并到一起的时候,遇到了Mdi不能添加到其它窗口下的问题. 分两种情况: 将mdi窗口A设成普通窗口B的子控件,需要将A的TopLevel设置成false,但是Mdi窗口的TopL ...

  8. 软硬链接ln

    1:软链接 -- 快捷方式 I:ln -s 文件名 快捷方式的名字 文件名:使用绝对路径 II':目录也可以创建链接 2:硬链接 I: ln 文件名 硬链接的名字

  9. 使用Solrj 获取语句分词结果的代码

    import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.log4 ...

  10. SDOI2018IIIDX

    /* 题目转换为 n个节点的一片森林,n个权值,要给每个节点分配一个权值,保证子节点的权值不小于父节点的权值,并且1~n的权值的字典序最大. 考场上的贪心很显然 建立出 树来 将所有数值从大到小排序 ...