vue組件間參數與事件傳遞

父組件向子組件傳值 以及父組件調用子組件方法

//父組件 傳遞
<template>
  <div>
      <naver :name='name' ref="name"></naver>
      <button @click="get_name"></button>
  </div>
</template>
<script>
import naver from '@/components/nav'
export default{
  components:{
    naver
  },
  data(){
    return {
      name:'1',
    }
  },
  methods:{
    get_name(){  //這樣可以直接調用子組件方法
      this.$refs.name.get_name()
    }
  },
}
</script>
//子組件 接收
<template>
  <div>
      
  </div>
</template>
<script>
export default{
  props:{
    name:{
      default: 'may', //默認值
      type: String, //類型
    },
    name: String,//無默認值可以直接定義類型
  },
wacth(){
  name(val,oldval){
    //接收的值可以監聽, 父組件可以改變傳遞數據的值來觸發子組件的方法
  }
},
  data(){
    return {
      
    }
  },
methods:{
    get_name(){  
      return 'may'
    }
  },
}
</script>

子組件向父組件傳值 以及子組件觸發調用父組件方法

//父組件接收
<template>
  <div>
      <naver @get_name="getName"></naver>//父組件綁定自定義事件get_name來觸發自己的getName方法,通過傳參拿到子組件數據
  </div>
</template>
<script>
import naver from '@/components/nav'
export default{
  components:{
    naver
  },
data(){
    return {
      name:'',
    }
  }
},
methods:{
  getName(data){
     this.name = data
  }
}
</script>
//子組件傳遞
<template>
  <div>
      <button @click='send_name'>send</button>
  </div>
</template>
<script>

export default{
data(){
    return {
      name:'may',
    }
  }
},
methods:{
  send_name(data){
     this.$emit('get_name',this.name) //子組件通過點擊事件觸發send_name,然后通過$emit 來觸發自定義事件get_name,this.name為參數
  }
}
</script>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。