注释很详细,直接上代码
新增内容
- 子传父之子组件传递方法与值
- 子传父之父组件接收方法与值
源码
App.vue
html
<template>
<div id="app">
<!-- @事件名="方法" 接收子组件传递过来的方法,
可在方法中使用子组件传递的值 -->
<MyTest :counts="counts" @addCount="addCount"/>
</div>
</template>
<script>
// 导入局部注册组件
import MyTest from "./components/MyTest.vue";
export default {
name: "App",
components: {
//注册局部注册组件
MyTest,
},
data() {
return {
//定义data值
counts:1000
};
},
methods: {
addCount(num){//使用子组件传递过来的值进行操作
this.counts+=num;
}
},
};
</script>
<style>
#app {
display: flex;
flex-direction: row;
}
</style>
MyTest.vue
html
<template>
<div id="MyTest">
<h1>当前功德数:{{ counts }}</h1>
<div>
<!-- @click="$emit(事件名',传的数据) ,向父组件发送事件并传值" -->
<button v-for="(item) in num" @click="$emit('addCount',item)" :key="item">敲木鱼{{ item }}次</button>
</div>
</div>
</template>
<script>
export default {
// 因为组件每次使用都需要是一个新的对象,
// 所以data数据都需要是函数返回
data() {
return {
num:[1,10,100]
}
},
// 接收父组件传过来的数据
props:['counts']
}
</script>
<style lang="less" scoped>
#MyTest button{
margin: 0 10px;
}
</style>
效果演示