子组件child.vue源码:
<template>
<div class="child">
<button @click="sendData">点击向父组件传数据</button>
</div>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {
msg: '子组件数据'
}
},
methods: {
sendData() {
this.$emit('childHadSend', this.msg)
}
}
}
</script>
<style>
</style>
解释:点击button触发sendData方法,sendData方法中使用this.$emit方法向父组件派发了一个childHadSend事件,第二个参数为需要传递的数据。
父组件源码:
<template>
<div id="app">
<child @childHadSend="getData"></child>
<p>{{childData}}</p>
</div>
</template>
<script type="text/ecmascript-6">
import Child from 'components/child/child'
export default {
data() {
return {
childData: ''
}
},
methods: {
getData(data) {
this.childData = data
}
},
components: {
Child
}
}
</script>
<style>
</style>
解释:父组件接收到子组件派发的childHadSend方法,触发了getData方法,并将this.childData设置为传过来的data值,使得<p></p>中的值显示为子组件数据。
点击button后的运行结果: