[转] vue父组件触发子组件事件
1. 父组件中获取子组件方法
- $children
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<template> <div> <v-header></v-header> <v-content></v-content> <v-footer></v-footer> </div> </template> <script> import vHeader from './Header' ; import vContent from './Content' ; import vFooter from './Footer' ; export default { components:{vHeader,vContent,vFooter}, created(){ console.log( this .$children) //输出结果[VueComponent,VueComponent,VueComponent],此时可以通过下标获取响应组件,如获取vHeader为this.$children[0]. } } </script> |
- $refs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<template> <div> <v-header ref= 'header' ></v-header> <v-content ref= 'content' ></v-content> <v-footer ref= 'footer' ></v-footer> </div> </template> <script> import vHeader from './Header' ; import vContent from './Content' ; import vFooter from './Footer' ; export default { components:{vHeader,vContent,vFooter}, created(){ console.log( this .$refs); //输出结果:{header:VueComponent,content:VueComponent,footer:VueComponent},此时可以通过对象key进行获取响应组件,如vHeader组件获取为this.$refs.header } } </script> |
2. 子组件中定义父组件所要触发事件
- methods直接定义
1
2
3
4
5
6
7
8
9
10
|
<script> export default { methods:{ childAction(val= 'hello world' ){ console.log(val) } //此时在父组件,可以通过获取相应子组件,使用对象key值childAction对其进行调用,当前函数形参非必须 } } </script> |
- $on
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<script> export default { mounted(){ this .$on( 'bridge' ,(val)=>{ this .childAction(val); }); ///此时通过$on进行监听中间桥接函数bridge对目的方法childAction进行触发 }, methods:{ childAction(val= 'hello world' ){ console.log(val) } } } </script> |
3. 父组件调用子组件方法
- 父组件Father.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<template> <div> <v-header ref= 'header' ></v-header> <v-content ref= 'content' ></v-content> <v-footer ref= 'footer' ></v-footer> <button @click= 'emitChild1' >ref与on触发</button> <button @click= 'emitChild2' >ref直接触发</button> <button @click= 'emitChild3' >children与on触发</button> <button @click= 'emitChild4' >children直接触发</button> </div> </template> <script> import vHeader from './Header' ; import vContent from './Content' ; import vFooter from './Footer' ; export default { components:{vHeader,vContent,vFooter}, methods:{ emitChild1(){ this .$refs.footer.$emit( 'bridge' , '你好吗!' ); //打印: 你好吗 this .$refs.footer.$emit( 'bridge' ); //打印:hello world }, emitChild2(){ this .$refs.footer.childAction( '你好吗!' ); //打印: 你好吗 this .$refs.footer.childAction(); //打印:hello world }, emitChild3(){ this .$children[2].$emit( 'bridge' , '你好吗!' ); //打印: 你好吗 this .$children[2].$emit( 'bridge' ); //打印:hello world }, emitChild4(){ this .$children[2].childAction( '你好吗!' ); //打印: 你好吗 this .$children[2].childAction(); //打印:hello world }, } } </script> |
- 子组件Footer.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<template> <footer>This is footer-component</footer> </template> <script> export default { mounted(){ this .$on( 'bridge' ,(val)=>{ this .childAction(val); }); }, methods:{ childAction(val= 'hello world' ){ console.log(val) } } } </script> |
[转] vue父组件触发子组件事件的更多相关文章
- React 父组件触发子组件事件
Parent组件 import React from "react"; import Child from "./component/Child"; class ...
- vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式
vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式 class类组件示例 Father类组件 <template> & ...
- vue.js中父组件触发子组件中的方法
知识点:vue.js中,父组件的method中,触发子组件中的方法,获得子组件中的定义的属性 (1)子组件 : child_crud.js var html_child_crud= "< ...
- 基于vue,通过父组件触发子组件的请求,等请求完毕以后,显示子组件,同时隐藏父组件
正常情况下,子组件应该尽量减少业务逻辑,而应该将业务逻辑放到父组件里面,从而减少耦合,但是当 我们不得不用到这种情况时,可以采用下面的思路 解决方案 尽量将请求单独作为一个函数(不要将请求放到show ...
- vue父组件触发子组件方法
比如应用场景是弹窗中的组件,想要点弹窗时更新该组件展示对应记录的的值 methods: { edit (record) { this.mdl = Object.assign({}, record) t ...
- vue 父组件与子组件的三生三世
父组件和子组件相互传值:https://www.cnblogs.com/cxscode/p/11187989.html vue父组件触发子组件方法:https://www.cnblogs.com/cx ...
- Vee-validate 父组件获取子组件表单校验结果
vee-validate 是为 Vue.js 量身打造的表单校验框架,允许您校验输入的内容并显示对应的错误提示信息.它内置了很多常见的校验规则,可以组合使用多种校验规则,大部分场景只需要配置就能实现开 ...
- 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue 关于父组件无法触发子组件的事件的解决方法
一般情况导致无法触发子组件的方法 基本都是由于子组件未渲染完成 就进行了调用,解决方法如下: 1.加定时器 setTimeout(() => { //加定时器原因是,子组件页面未渲染处理就做 ...
随机推荐
- SAP 如何得到交货单上的序列号清单?
SAP 如何得到交货单上的序列号清单? 以内向交货单为例(外向交货单方法了类似)予以说明. 1)VL33N,在交货单显示界面, 但是没办法通过这个界面里导出序列号清单. 2),只能通过查表的方式导出序 ...
- PL/SQL Developer报错 ORA-12154:tns:could not resolve the connect identifier specified
PL/SQL Developer使用预先配置数据库报错 ORA-12154:tns:could not resolve the connect identifier specified. 情况描述:我 ...
- [转]MVC & JavaEE三层架构
- 201871010104-陈园园 《面向对象程序设计(java)》第八周学习总结
201871010104-陈园园 <面向对象程序设计(java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010128-杨丽霞《面向对象程序设计(Java)》第十二周学习总结
201871010128-杨丽霞<面向对象程序设计(Java)>第十一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- Mybatis-Plus Bugs
Mybatis-Plus Bugs 实体类中属性和数据库字段对应异常 Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'user ...
- pom文件详解(自己没看过)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Spring Boot 引入外部yml配置文件
当需要在springboot中引用其他的yml文件时,需要在application.yml里配置 spring: profiles: include: email,xmyb ...
- 学习-JVM命令
jstat jstat (JVM statistics Monitoring)是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据. 格式:js ...
- 编码-转义2-mark
文本编辑器utf8 "一".encode("gbk") 保存:"一"+utf8 保存为16进制的\xe4\xb8\x80,\x标识了 ...