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 ...
随机推荐
- bzoj5019: [Snoi2017]遗失的答案
Description 小皮球在计算出答案之后,买了一堆皮肤,他心里很开心,但是一不小心,就忘记自己买了哪些皮肤了.==|||万 幸的是,他还记得他把所有皮肤按照1-N来编号,他买来的那些皮肤的编号( ...
- HTML5绘制饼图示例(一)
原文地址:http://www.2cto.com/kf/201108/100251.html HTML5引入Canvas元素,用于图形的绘制,我们可以仅仅基于HTML和JavaScript就能绘制出原 ...
- maven之BOM及BOM和provided的一个小坑
BOM(Bill of Materials)定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号.BOM的维护方负责版本升级,并保证 ...
- 让android程序根据重力感应旋转屏幕(支持4个方向旋转)
原文地址:http://blog.csdn.net/yixiaoqingyuz/article/details/6453798代码如下: ChangeOrientationHandler.java p ...
- package.json-nodeJs
package.json文件描述了一个NPM包的所有相关信息,包括作者.简介.包依赖.构建等信息.格式必须是严格的JSON格式. 通常我们在创建一个NPM程序时,可以使用npm init命令,通过交互 ...
- ZooKeeper的安装和API
Zookeeper的分布式安装和API介绍: 安装教程 在datanode1.datanode2和datanode3三个节点上部署Zookeeper. 步骤 解压zookeeper安装包到/opt/m ...
- 限制EditText最多输入n位,设置EditText最大输入长度;
1.比较笨的方法: /** * 设置edittext最大的输入限制 * @param editText * @param length */ private void setMaxLength(Edi ...
- Android购物车的实现,仿淘宝天猫京东等APP。处理RecyclerView或listview中的选中事件;
很久之前的代码了,拉出来晾晾! 购物车大致思路: 分为:商品.店铺.全选: 商品全部选中后--店铺自动选中:商品未全部选中(若有一个商品未选中)--店铺不选中. 店铺全部选中后--全选自动选中:店铺未 ...
- Noip数学整理
目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...
- Postgresql ERROR: permission denied for relation app_info
启用终端,: 进入mydb数据库:\c mydb 然后给当前数据库的角色赋予权限:GRANT ALL PRIVILEGES ON TABLE 表名 TO 角色名;