这个需求主要用到的是ref属性和$refs对象
先说ref,ref被用来给元素或者子组件注册引用信息。给普通的DOM元素使用,引用指向的就是DOM元素,用在子组件上,引用就指向组件实例。
当你注册之后需要访问你注册的refDOM或者子组件是通过$refs来获取。
当你DOM上注册ref时,你可以用this.$refs.form.xxx,来操作这个DOM的方法。
<template>
<el-form
ref="form"
:model="form"
class="u-form"
>
// some code
</el-form>
</template>
<script>
export default {
data() {
return {};
},
methods: {
handleSubmit() {
this.$refs.form.validate(async (valid) => {
if (valid) {
// some code
}
});
}
}
}
</script>
当你注册子组件时,同样可通过this.$ref.ch在父组件中获取子组件。
<template>
<section>
// some code
<RiskDialog
ref="ch"
:dialogVisible.sync="riskVisible"
:form="data.riskForm"
@postRisk="postRiskHandle"
/>
</section>
</template>
<script>
import RiskDialog from 'xxxxx';
export default {
data() {
return { };
},
fn() {
// 在父组件中找到子组件,并操作子组件的相关方法
this.$refs.ch.click();
}
}
</script>
当想在父组件中获取子组件,并操作子组件中有设置ref的DOM的方法是改怎么做?
this.$refs.ch.$refs.form.resetFields();
以上就是就是关于父组件操作子组件的相关方法了,详细的可以去看Vue相关文档,里面有详细的说明。
网友评论