vue 的父组件和子组件互相获取数据和方法
父组件主动获取子组件的数据和方法
一、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 的父组件和子组件互相获取数据和方法的更多相关文章
- vue中父级与子组件生命周期的先后顺序
1.vue的生命周期 2.views/createrCustormer.vue为父级 <template> <expressService /> </ ...
- 关于VUE调用父实例($parent) 根实例 中的数据和方法
this.$parent或者 this.$root 在子组件中判断this.$parent获取的实例是不是父组件的实例 在子组件中console.log(this.$parent) 在父组件中con ...
- vue 父组件传递子组件事件
在开发中,碰到一个需要从父组件传入方法,子组件点击触发,说白了就是,把方法传入给子组件调用 <el-col v-for='data in spreadFormat.icons' class=&q ...
- Vue中,父组件向子组件传值
1:在src/components/child/文件夹下,创建一个名为:child.vue的子组件 2:在父组件中,设置好需要传递的数据 3:在App.vue中引入并注册子组件 4:通过v-bind属 ...
- VUE 父组件与子组件交互
1. 概述 1.1 说明 在项目过程中,会有很多重复功能在多个页面中处理,此时则需要把这些重复的功能进行单独拎出,编写公用组件(控件)进行引用.在VUE中,组件是可复用的VUE实例,此时组件中的dat ...
- Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?
原文:https://blog.csdn.net/zhouweixue_vivi/article/details/78550738 2017年11月16日 14:22:50 zhouweixue_vi ...
- Vue 组件&组件之间的通信 之 父组件向子组件传值
父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:com-b要获取父组件dat ...
- vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值。
vue+elementUI项目,父组件向子组件传值,子组件向父组件传值,父子组件互相传值. vue 父组件与子组件相互通信 一.父组件给子组件传值 props 实现父组件向子组件传值. 1父组件里: ...
- Vue系列之 => 父组件向子组件传值
父组件向子组件传递数据 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta c ...
- vue 父组件给子组件传值 Vue父组件给子组件传方法 Vue父组件把整个实例传给子组件
Home.vue <template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> <v-header ...
随机推荐
- 1136 A Delayed Palindrome (20 分)
Consider a positive integer N written in standard notation with k+1 digits ai as ak⋯a1a0 ...
- GPS获取坐标 显示Google map偏差计算
用手机获取GPS坐标 显示在手机地图偏差大约在100-200米左右,我把坐标放在 Maps.google.com 搜索坐标定位则相当精确. 可能是.....为了安全吧故意加的偏差 不过可以计算偏差使位 ...
- ado.net 中事务的使用
SqlHelper 类方法中启用事务 public static int UpdateByTran(List<string> sqlList) { SqlConnection conn = ...
- 0009 - WebFlux
1.概述 大多数场景使用MVC都是阻塞式的,WebFlux使用的场景是异步非阻塞的 响应式编程是基于异步和事件驱动的非阻塞程序,只是垂直通过在JVM内启动少量线程扩展,而不是水平通过集群扩展. Spr ...
- 递归锁,event事件和信号量
锁通常被用来实现对共享资源的同步访问.为每一个共享资源创建一个Lock对象,当你需要访问该资源时,调用acquire方法来获取锁对象(如果其它线程已经获得了该锁,则当前线程需等待其被释放),待资源访问 ...
- Postgresql ERROR: permission denied for relation app_info
启用终端,: 进入mydb数据库:\c mydb 然后给当前数据库的角色赋予权限:GRANT ALL PRIVILEGES ON TABLE 表名 TO 角色名;
- web app 、native app、hybrid app比较
web app .native app.hybrid app比较 产品新人学习路 关注 2017.06.04 14:52* 字数 1887 阅读 11476评论 1喜欢 15 之前做讨论的时候,提出了 ...
- Linux之文档与目录结构 (/ 用法, 相对路径,绝对路径)
Linux之文档与目录结构 Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到 ...
- 初学Jmeter添加Http请求,执行接口测试
最近测试并发,刚开始使用的是录制方法,后面发现录制后无任何界面,加参数也不知从何着手,于是查了很多文章,终于慢慢的着手从http请求来测试并发了. 当然这是个遗留问题,先放在这里后面清楚了再回来补充: ...
- c# 后台AJAX
public class BackA { #region 后台 AJAX public static string GetPage(string posturl) { Stream outstream ...