vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式
vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式
class类组件示例
Father类组件
<template>
<div>
<h1>父组件</h1>
<button @click="handleSonMethod">点击触发子组件方法(修改子组件的描述)</button>
<Son ref="son" />
</div>
</template> <script lang='ts'> // lang要定义为ts
import { Vue, Prop, Component } from "vue-property-decorator";
import Son from "./Son.vue"; @Component({
name: "Father",
components: { Son }
})
export default class Father extends Vue {
// prop
@Prop(Array) sub_projects!: string[]; // 必传
@Prop(String) selected_project?: string; // 非必传 // data
son: any = null // 存储子组件
selected_org: string = "1";
options: Array<{ value: string; label: string }> = [
{
value: "1",
label: "1"
},
{
value: "2",
label: "2"
},
{
value: "3",
label: "3"
}
]; // computed 计算属性
get username(): string {
return `计算属性username`;
} // 钩子函数
created() {
console.log("created钩子触发了");
} // method 方法
handleSonMethod() {
// 调用子组件的handleChangeDesc方法
(this.$refs.son as any).handleChangeDesc('你好,中国')
}
}
</script>
Son类组件
<template>
<div>
<h2>子组件的描述信息:<span style='color: red'>{{ desc }}</span></h2>
</div>
</template> <script lang='ts'>
import { Vue, Component } from "vue-property-decorator"; @Component({ name: "Son" })
export default class Son extends Vue { // data
desc: string = "我是子组件Son"; /**
* @description: 修改子组件展示的描述信息
* @param { string } msg 子组件描述信息
*/
handleChangeDesc(msg: string) {
this.desc = msg;
}
}
</script>
父组件触发子组件方法的方式
以前的方式
this.$refs.son.handleChangeDesc('你好,中国')- 会报错,因为引入了typescript

第一种方式:类型断言
as 关键字(推荐用这种)
handleSonMethod() {
// 调用子组件的handleChangeDesc方法
(this.$refs.son as any).handleChangeDesc('你好,中国')
}
<数据类型> ===>> 比如
handleSonMethod() {
// 调用子组件的handleChangeDesc方法
(<any>this.$refs.son).handleChangeDesc('你好,中国')
}
第二种方式:将this.$refs.son赋值给一个组件的一个属性
// 1. 组件上定义一个可以存储任意数据类型值的属性‘son’
son: any = null // 存储子组件 // 2. 将子组件的实例赋值给‘son’,通过这个变量去调用子组件的方法
handleSonMethod() {
// 调用子组件的handleChangeDesc方法
this.son = this.$refs.son
this.son.handleChangeDesc('你好,中国')
}
效果图
触发前

触发后

vue-property-decorator和typescript结合构建的class类组件,父组件触发子组件方法的方式的更多相关文章
- vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)
看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...
- vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题
Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范. vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素,它是通过使 ...
- Vue : props 使用细节(父组件传递数据给子组件)
props使用细节 在Vue.js中我们可以使用 props 实现父组件传递数据给子组件,下面我们总结一下props的使用细节 1.基础类型检查 2.必填数据 3.默认值 4.自定义验证函数 其中每一 ...
- vue中父组件传数据给子组件
父组件: <template> <parent> <child :list="list"></child> //在这里绑定list对 ...
- vue.js中父组件触发子组件中的方法
知识点:vue.js中,父组件的method中,触发子组件中的方法,获得子组件中的定义的属性 (1)子组件 : child_crud.js var html_child_crud= "< ...
- vue 父组件数据修改,子组件数据未修改
页面: 父组件 <myfeedback></myfeedback> 子组件 <news></news> myfeedback.vue <te ...
- vue 父向子组件传递数据,子组件向父组件传递数据方式
父组件向子组件传递数据通过props,子组件引入到父组件中,设置一个值等于父组件的数据,通过:bind将数据传到子组件中,子组件中通过props接收父组件的数据,这样就可以使用父组件的数据了,循环组件 ...
- vue父组件传参给子组件
其实组件之间传参有很多种方法: 1.通过本地存储 2.使用vuex状态管理 今天记录一下第三种方法 1.首页我们先创建一个项目(创建项目自行百度) 2.打开项目,在components文件夹下新建一个 ...
- 【vue】父向子组件传参、子组件向父传参
1.父向子组件传参 App.vue为父,引入componetA组件之后,则可以在App.vue中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,componenta与 ...
随机推荐
- F5负载均衡架构
初识F5 提起F5,首先会想到负载均衡,也就是Load Balance.其意思就是将负载(工作任务)进行平衡.分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键 ...
- IP,MAC
MAC寻址与IP寻址 两者是协议上的区分,MAC地址是网卡的物理地址,是提供二层交换机转发数据的,交换机会在自己的内部形成一个MAC地址表,然后根据这个表转发数据包:再者,如果说网络规模大一点的话,机 ...
- docker入门-安装篇
一.docker介绍 1:docker官网 www.docker.com 2:github https://github.com/docker/docker.github.io 3:开源的容器引擎, ...
- 2019年JVM面试都问了什么?快看看这22道面试题!(附答案解析)
一. Java 类加载过程? Java 类加载需要经历一下 7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成一下三件事情: • 通过一个类的全限定名获取该类的二进制流. • 将该 ...
- C语言每日一练——第7题
一.题目要求 已知数据文件in.dat中存有200个四位数,把这些数存到数组a中,编写函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的含有两位数字的数ab(新数的十位数字是原四位数的 ...
- IDEA+Maven 整合SSM框架实现简单的增删改查(新手入门,傻瓜操作)
原博客地址:https://blog.csdn.net/khxu666/article/details/79851070 选用SSM框架的原因在目前的企业级Java应用中,Spring框架是必须的.S ...
- doGet()方法和doPost()方法有什么区别?
1. 一般上,get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.pos ...
- CCF-CSP题解 201903-2 二十四点
可枚举. 写栈的主要思想是:一个数栈\(numSta\),一个运算符栈\(opSta\).遇到一个运算符,就把之前优先级\(equal\ or\ greater\ than\)它的运算符处理掉. #i ...
- Python 基础:入门必备知识
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:程序员野客 先看下咱们的基础目录1 标识符2 关键字3 引号4 编码5 ...
- asp.net core 3.0 MVC JSON 全局配置
asp.net core 3.0 MVC JSON 全局配置 System.Text.Json(default) startup配置代码如下: using System.Text.Encodings. ...