一,子组件向父组件传值($emit):
1、定义子组件
<template><div>子组件:<span>{{childValue}}</span><!-- 定义一个子组件传值的方法 --><input type="button" value="点击触发" @click="childClick"></div>
</template>
<script>export default {data () {return {childValue: '我是子组件的数据'}},methods: {childClick () {// childByValue是在父组件on监听的方法// 第二个参数this.childValue是需要传的值this.$emit('childByValue', this.childValue)}}}
</script>
2、定义父组件
<template><div>父组件:<span>{{name}}</span><br><br><!-- 引入子组件 定义一个on的方法监听子组件的状态--><child v-on:childByValue="childByValue"></child></div>
</template>
<script>import child from './child'export default {components: {child},data () {return {name: ''}},methods: {childByValue: function (childValue) {// childValue就是子组件传过来的值this.name = childValue}}}
</script>
总结:
子组件向父组件传值,同样的他们之间的契合点也是子组件引入的地方。
首先来到子组件,用$emit发射数据
然后再来到父组件,在契合点的地方
二,父组件向子组件传值(props)
1、定义父组件
<template><div>父组件:<input type="text" v-model="name"><br><br><!-- 引入子组件 --><child :inputName="name"></child></div>
</template>
<script>import child from './child'export default {components: {child},data () {return {name: ''}}}
</script>
2、定义子组件
<template><div>子组件:<span>{{inputName}}</span></div>
</template>
<script>export default {// 接受父组件的值props: {inputName: String,required: true}}
</script>
总结:
父组件想要向子组件传值,那么必然有一个地方是相互衔接的,意思就是我们要找到父组件与子组件之间的那个契合点。
契合点就是:子组件引入的地方
那么我们可以自定义一个属性来存放父组件向子组件传递的数据。
这样,父组件就把值传出去了,那么就回到子组件来接收这个值
到这里,子组件就拿到了父组件传递过来的值了
子组件使用该值