Vue之組件的自定義事件詳解

在這裡插入圖片描述

<template>
  <div >
    <h2>{{msg}}</h2>
    <!-- 通過父組件給子組件傳遞函數類型的數據props實現:子給父傳遞數據 -->
<School :getName="getName"/>
<Student :getStudentname="getStudentname"/>
<!-- 通過父組件給子組件綁定一個自定義事件:實現子給父傳遞數據 -->
<Age v-on:elderSex="demo"/>
<!-- 通過父組件給子組件綁定一個自定義事件實現:子給父傳遞數據(第二種寫法:使用ref) -->
   <!-- <Student ref="student"/> -->
  </div>
</template>
<script>
import School from './components/School.vue'
import Student from './components/Student.vue'
import Age from './components/Age.vue'
export default {
name:'App',
components:{ School,Student ,Age},
data(){
  return {
    msg:'你好,世界!'
  }
},
methods:{ 
  getName(name){
    console.log('App收到瞭名字',name);
  },
  getStudentname(name1){
    console.log('接收到瞭學生的姓名',name1);
  },
  demo(sex1){
    console.log( 'demo被調用瞭',sex1);
  }
},
// mounted() {
  //綁定自定義事件
//   this.$refs.student.$on('elderSex',this.schoolAge)
//綁定自定義事件(一次性)
//   this.$refs.student.$once('elderSex',this.schoolAge)
// },
}
</script>
<style scoped>
</style>
<template>
  <div class="demo">
    <h2>學生姓名:{{name}}</h2>
    <h2>學生年齡:{{age}}</h2>
    <button @click="sendStudentname">把學生的名字給APP</button>
  </div>
</template>
<script>
  export default {
    name: 'Student',
    props: ['getStudentname'],
    data() {
      return {
        name: '張三',
        age: 19
      }
    },
    methods: {
      sendStudentname() {
        this.getStudentname(this.name)
      }
    }
  }
</script>
<style>
  .demo {
    background-color: skyblue;
  }
</style>

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: