父子组件值、方法引用

1、值

1.1 父组件获取子组件值

父组件

<template>
<div>
<button @click="getChildValue">click</button>
<child ref="child"></child>
</div>
</template> <script>
import Child from './Child.vue' export default {
name: "Parent",
components: {
Child
},
data() {
return {}
},
methods: {
getChildValue() {
console.log(this.$refs.child.msg1)
}
}
}
</script>

子组件

<template>
<div id="child">
<div>{{ msg1 }}</div>
</div>
</template> <script>
export default {
name: "Child",
data() {
return {
msg1: "i am child"
};
},
methods: {}
}
</script>

测试结果在控制台查看

1.2 子组件获取父组件值

方式1:

props: ['parentName']

方式2:

props: {
parentName: String //这样可以指定传入的类型,如果类型不对,会警告
}

方式3:

props: {
msgVal: {
type: String, //指定传入的类型
//type 也可以是一个自定义构造器函数,使用 instanceof 检测。
default: '' //这样可以指定默认的值
}
}

注意:props 会在组件实例创建之前进行校验,所以在 default 或 validator 函数里,

诸如 data、computed 或 methods 等实例属性还无法使用

父组件

<template>
<div>
<child ref="child" :parentName="parentName"></child>
</div>
</template> <script>
import Child from './Child.vue' export default {
name: "Parent",
components: {
Child
},
data() {
return {
parentName:'i am parent'
}
},
methods: { }
}
</script>

子组件

<template>
<div id="child">
<button @click="getParentsValue">获取父组件值</button>
</div>
</template> <script>
export default {
name: "Child",
props:['parentName'],
data() {
return {
};
},
methods: {
getParentsValue(){
console.log(this.parentName)
}
}
}
</script>

2、方法

2.1 父组件调用子组件方法

父组件

<template>
<div>
<button @click="clickChildMethodNoParams">调用子组件方法 无参数 </button>
<button @click="clickChildMethodParams">调用子组件方法 有参数 </button>
<child ref="child" ></child>
</div>
</template> <script>
import Child from './Child.vue'
export default {
name: "Parent",
components: {
Child
},
data() {
return {
}
},
methods: {
clickChildMethodNoParams(){
this.$refs.child.childMethod();
},
clickChildMethodParams(){
this.$refs.child.childMethodAddParams(' i am parent ');
}
}
}
</script>

子组件

<template>
<div id="child">
<p> this is child compoents </p>
</div>
</template> <script>
export default {
name: "Child",
data() {
return {
};
},
methods: {
childMethod(){
console.log('i am child method')
},
childMethodAddParams(param){
console.log('i am child method ',param)
}
}
}
</script>

2.2 子组件调用父组件方法

父组件

<template>
<div>
<child ref="child"
@clickChildMethodNoParams="clickChildMethodNoParams"
@clickChildMethodParams="clickChildMethodParams"
></child>
</div>
</template> <script>
import Child from './Child.vue' export default {
name: "Parent",
components: {
Child
},
data() {
return {
}
},
methods: {
clickChildMethodNoParams(){
console.log('i am parent')
},
clickChildMethodParams(params){
console.log('i am parent '+ params)
}
}
}
</script>

子组件

<template>
<div id="child">
<button @click="childParentMethodNoParams">调用父组件方法 无参数 </button>
<button @click="childParentMethodParams">调用父组件方法 有参数 </button>
<p> this is child compoents </p>
</div>
</template> <script>
export default {
name: "Child",
data() {
return {
};
},
methods: {
childParentMethodNoParams(){
this.$emit('clickChildMethodNoParams');
},
childParentMethodParams(){
this.$emit('clickChildMethodParams','hello i am child ');
}
}
}
</script>

【Vue】父子组件传值、方法引用的更多相关文章

  1. Vue 父组件传值给子组件,对象数组类型,父组件直接调用子组件方法,会是上次的引用地址,vue 父子组件传值数据不能实时更新问题

    vue 父子组件传值数据不能实时更新问题 解决方案一: 在子组件进行深度监听,然后监听里调用方法就可以了 父组件测试代码 <WranList ref="myEMChartRef2&qu ...

  2. vue父子组件传值加例子

    例子:http://element-cn.eleme.io/#/zh-CN/component/form         上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...

  3. 一个故事讲懂vue父子组件传值

    作者:李佳明同学链接:https://www.jianshu.com/p/2272b6ca0f0c 一个故事讲懂vue父子组件传值 讲故事前先讲代码 父组件向子组件传值 父组件数据传递给子组件可以通过 ...

  4. 关于Vue父子组件传值(复杂数据类型的值)的细节点

    vue 父子组件传值是很常见的,多数情况下都是父传递给子的值是基础数据类型,如string,number,boolean, 当父组件值被修改时,子组件能够实时的作出改变. 如果父子传值的类型是复杂数据 ...

  5. Vue父子组件传值——第一次传不过去之“怪象”?

    前言:最近写Vue父子组件传值出现第一次传不过去之"怪象",以为Vue的BUG呢.然则,是自己太菜"^_^"!!!特此记录以警己 <spec-param& ...

  6. vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全

    vue项目经常需要组件间的传值以及方法调用,具体场景就不说了,都知道.基本上所有的传值都可以用vuex状态管理来实现,只要在组件内监听vuex就好. vue常用的传值方式以及方法有: 1. 父值传子( ...

  7. Vue父子组件传值以及父调子方法、子调父方法

    稍微总结了一下Vue中父子间传值以及相互调方法的问题,非常基础.希望可以帮到你!先来个最常用的,直接上代码: 1.父传值给子组件 父组件: <template> <div> & ...

  8. Vue 父子组件传值 props

    1.Vue 的渲染周期: vue 如何实现响应式追踪. 父子组件通信有很多方式,今天单独聊下props 的方式.我们通过查找官方文档很容发现,props传值有静态和动态两种传值方式. 当然props ...

  9. VUE父子组件传值问题

    一.父组件向子组件传递数据 组件实例的作用域是孤立的.这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子组件的props选项. 1.静态props ...

  10. vue 父子组件传值,兄弟组件传值

    父子组件中的传值 父向子    v-bind props <!-- 组件使用v-bind传值 --> <router :msg="msg"></rou ...

随机推荐

  1. mysql导出csv

    1.正常查询 SELECT a.emp_no '员工号',b.seq '文章序号' from vote_records a INNER JOIN vote_content b ON a.vote_co ...

  2. [Go] 递归获取目录下的文件

    操作示例: ./scan /Document/dir 代码: // 定义递归文件树结构体 type treeList struct { Path string `json:"path&quo ...

  3. 帝国cms sql检则标题重复

    <?php //检则标题重复 $sql=$empire->query("select id,filename from phome_ecms_news where classid ...

  4. 深谈Spring如何解决Bean的循环依赖

    1. 什么是循环依赖 Java循环依赖指的是两个或多个类之间的相互依赖,形成了一个循环的依赖关系,这会导致程序编译失败或运行时出现异常.下面小岳就带大家来详细分析下Java循环依赖. 简单来讲就是:假 ...

  5. Tmux 使用教程

    本文转载自阮一峰老师的博客文章<Tmux 使用教程>,感谢阮老师! Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具. 本文介绍如何使用 ...

  6. SqlServer 添加字段说明、表说明

    1.添加表说明 EXECUTE sp_addextendedproperty N'MS_Description','表说明',N'user',N'dbo',N'table',N'表名',NULL,NU ...

  7. Object-Advanced笔记

    JavaScript对象进阶 数据劫持 1. 概念 一旦访问或者修改对象的属性时 拦截这个行为(访问/修改) 并对其添加除这个行为外的操作 最后返回结果 2. 实现 2.1 getter和setter ...

  8. Java方法的返回值及注意事项

    方法的返回值 为什么要有带返回值的方法呢? 调用处拿到方法的结果之后,才能根据结果进行下一步操作 带返回值方法的定义和调用: 如果在调用处,要根据方法的结果去编写另一段代码逻辑 为了在调用处拿到方法产 ...

  9. LINUX经常使用的命令详解

    LINUX经常使用的命令详解 源地址:http://blog.itpub.net/29065182/viewspace-1189162/ 1.man 对你熟悉或不熟悉的命令提供帮助解释  eg:man ...

  10. golang中一种不常见的switch语句写法

    最近翻开源代码的时候看到了一种很有意思的switch用法,分享一下. 注意这里讨论的不是typed switch,也就是case语句后面是类型的那种. 直接看代码: func (s *systemd) ...