1. 程式人生 > >vue 元件之間資料傳遞

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 來自子元件
      }
    }
複製程式碼

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