---
# System prepended metadata

title: Vue 資訊傳送
tags: [Vue, 教學]

---

# Vue 資訊傳送
###### tags: `教學` `Vue`

## 子組件取用父組件的值
### 父組件
```console=
<template>
    <son :test="example"/>
</template>

<script>
export default {
    data() {
        example: null
    }
}
</script>
```
### 子組件
```console=
<script>
export default {
    test: {
        type: String, //放該值的型態
        default: ''  //如果沒有get到的話的預設值
        required: false //是否一定要有傳值
    }
}
</script>
```

## 父組件取用子組件的值
### 子組件
```console=
<script>
    this.$emit('passdata', the_data_u_want_to_pass)
</script>
```
### 父組件
```console=
<template>
    <son @passdata="getdata"/> 子組件$emit的方法要在父組件註冊，父組件會用getdata()的method來處理
</template>

<script>
export default {
    methods: {
        getdata(value) {
            ...
        }
    }
}
</script>
```
## 父組件更改子組件的值
跟 子組件取用父組件的值 一樣，父組件改值，子組件也會同步變

## 子組件更改父組件的值
跟 父組件取用子組件的值 一樣的方法，$emit到父組件，父組件在用methods去處理

## 父組件啟動子組件的methods
### 父組件
```console=
<script>
    this.$emit('activate', if_want_to_pass_data)
</script>
```
### 子組件
```console=
<script>
export default {
    methods: {
        process() {
            ...
        }
    },
    
    mounted() {
        this.$root.$on('activate', (if_have_to_catch_data) => {
            this.process();
        });
    }
}
</script>
```
