vue 組件之間數據傳遞(七)


1、props:父組件 -->傳值到子組件
 app.vue是父組件 ,其它組件是子組件,把父組件值傳遞給子組件需要使用 =>props

在父組件(App.vue)定義一個屬性(變量)sexVal = '男' 把該值傳遞給 子組件(B.vue),如下:

App.vue
<template>
  <div id="app">
    <!--<router-view></router-view>-->
  <parentTochild :sex="sexVal"></parentTochild>
    </div>
</template>

<script>
  import parentTochild from  './components/B'
  export default {
    name: 'app',
    data: function () {
     return {
        sexVal:""
     }
    },
    methods: {

    },
    components: {
      parentTochild
    }

  }
</script>

B.vue

<template>
  <div class="b_class">  <!--外邊只允許有一個跟元素-->
      <p>父組件傳值給子組件</p>
      <p>姓名:{{name}}</p>
      <p>年齡:{{age}}</p>
      <p>sex:{{sex}}</p>

  </div>
</template>
<script>
  export default {
    data: function () {
      return {
        name: 'zs',
        age: 22
      }
    },
    props:['sex']
  }
</script>

 

tips:

在父傳值給子組件使用屬性值:props; 理解成 “ 中介”  父組件綁定傳遞屬性值(:sex="sexval") 子組件 獲取屬性值 props['sex'] 會添加到data 對象中

 

 


2、$emit:
子組件 -->傳值到父組件

在B.vue 子組件添加一個點擊事件為例子
 @click="sendMs

<input type="button" @click="sendMsg" value="子組件值傳父組件">

在調用該函數后使用$emit方法傳遞參數 (別名,在父組件作為事件名稱, 值); 

  methods: {
      sendMsg: function () {
       this.$emit('childMsg', '值來自---子組件值')
      }
    }

 

App.vue

在父組件中 使用該別名(作為事件名使用),調用方法 childEvent 返回子組件傳過來的值

 <p>{{message}}</p>  
    <!--<router-view></router-view>-->
 <parentTochild :sex="sexVal" @childMsg = "childEvent"></parentTochild>

 

 

data: function () {
      return {
        sexVal: "女",
        message: ''

      }
    },
    methods: {
      childEvent: function (msg) {
         this.message = msg;   //  msg 來自子組件
      }
    }

 點擊 “按鈕”值會傳到 父組件中。 組件之間不能互相傳值。

 







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM