1. 程式人生 > 實用技巧 >vue element 父元件和子元件 傳值

vue element 父元件和子元件 傳值

vue 父元件與子元件相互通訊

一、父元件給子元件傳值
      props 實現父元件向子元件傳值。
1父元件裡:
<child-pack  :msg ="myMsg" v-on:listenTochildEvent="showMessageFromChild"></child-pack>
msg是繫結的自定義屬性,類似我們原生html 給標籤自定義屬性一樣,Widget是傳輸變數
<script >
import childpack from './childPack.vue' //引用子元件
export default{
  name: 'FatherPack',
  components: { childpack },
  data(){
      return(){
           myMsg:‘我是父元件引數’
       }
  },
  mothods:{
  }

}
</script>
 
2子元件裡:
<div>
    <span>{{msg}}</span>
</div>
export default {
  name: 'ChildPack',
  props:["msg"]
 //也可以指定預設型別和預設值
 // props: {
 //    msg: {
 //       type: Number,
  //      default: 0
  //    }
 // },
   // isPublic: { // type: Boolean, // default: undefined //注意!對於布林型別,預設值不要寫成false,否則isPublic永遠為false。 // }
  data(){
  },
  created() {
     console.log('child_msg',this.msg)
  },
  mothods:{
  },

}

二、子元件傳值到父元件
this.$emit() 實現子元件向父元件傳值。

1在子元件裡:
export default{
    methods: {
          changeFather(){
             this.$emit("listenTochildEvent","我是子元件的引數");
          },
        //可以傳遞引數,引數可以是值、物件、陣列等型別。
        //  changeFather(pms){ 
        //    this.$emit("listenTochildEvent",pms);
       //   },
} } 
 

2在父元件:定義事件listenTochildEvent,並實現showMessageFromChild方法,接收父元件傳遞來的引數。
<child-pack  :msg ="myMsg" v-on:listenTochildEvent="showMessageFromChild"></child-pack>
<script >
import childpack from './childPack.vue' //引用子元件
export default{
  name: 'FatherPack',
  components: { childpack },
  data(){
      return(){
           myMsg:‘我是父元件引數’
       }
  },
  mothods:{
     showMessageFromChild(data){
        console.log(data);
  }

}
</script>