VUE中父组件调用子组件的方法
父组件通过 props 向下传递数据给子组件,子组件通过 $emit触发events 给父组件发送消息。尽管存在 props 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件,这就需要使用ref特性,通过 ref 特性为这个子组件赋予一个 ID 引用。
ref:用来给元素或子组件注册引用信息,引用信息将会注册在父组件的$refs对象上。如果在普通的DOM元素上使用,那么指向的就是普通的DOM元素。
ref加在子组件上,在父组件中用this.$refs.name 获取到的是组件实例,可以调用组件的所有属性和方法。
一、在子组件里写一个方法:
<template>
<div></div>
</template>
<script>
export default {
methods:{
childMethod(flag) {
console.log(flag)
}
}
}
</script>
二、父组件: 在子组件中加上ref即可通过this.$refs.ref.method调用
<template>
<div @click="parentMethod">
<children ref="child1"></children>
</div>
</template>
<script>
import children from 'components/children/children.vue'
export default {
data(){
return {
flag: true
}
},
components: {
'children': children
},
methods:{
parentMethod() {
console.log(this.$refs.child1) //返回的是一个vue对象,所以可以直接调用其方法
this.$refs.child1.childMethod(this.flag);
}
}
}
</script>