开发中用到最多的场景,父子组件通信,分发事件,组件传值。
Props 父组件向子组件通信
1 2 3 4 5 6 7 8 9 10 11 12 13
| <parent> title:'props传值', date:'2020/03 ' </parent>
export default { name:'child', props:['title','date'] }
|
$emit 子组件向父组件通信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| vm.$emit(eventName,[...args])
1){string} eventName 2) [...args]
当我们在子组件中执行$emit时,就会触发父组件对应的event
1)首先我们在子组件中使用$emit方法去编写代码(不传递第二个参数),触发父组件的event
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <template> <div class="home"> <p>这里是Home组件</p> <el-button type="primary" v-on:click='btnClickHandler("Yes")'>Yes</el-button> <el-button type="primary" v-on:click='btnClickHandler("No")'>No</el-button> </div> </template> <script> export default { name: 'Home', methods: { btnClickHandler: function(param){ if(param == "Yes"){ this.$emit('sayYes'); }else if(param == "No"){ this.$emit('sayNo'); } } } } </script>
<home v-on:sayYes='val="yes"' v-on:sayNo='val="no"'> </home>
|
$parent
$parent是vue的一个实例属性,它表示的就是当前组件的父实例。
假如父组件中有一个方法为sayYes,那么在子组件中就可以直接使用this.$parent.sayYes去调用父组件的方法。