---
# System prepended metadata

title: 元件直接加入v-model (5-4)
tags: [5. 進階Api, Vue]

---

# 元件直接加入v-model (5-4)
###### tags: `Vue`、`5. 進階Api`
2022.3.7

　　&emsp;&emsp;讓元件輸入資料也能和外部資料雙向綁定。

### 範例1：簡單雙向綁定（一個輸入框）
```
<元件 v-model:傳遞變數在元件中名稱="外部變數名稱"></元件>

props=['傳遞變數在元件中名稱'],
template:`<input :value="傳遞變數在元件中名稱" @input="$emit('update:傳遞變數在元件中名稱',$even.target.value)">`
```


---

```     
<div id="app" >
       {{ text }}<br>
       <oldmoon v-model:text="text"></oldmoon>
</div>

<script>
        const app = Vue.createApp({
            data(){
                return{
                    text:'輸入的文字'
                }
            }
        });

        app.component('oldmoon',{
            props:['text'],
            template:`<input :value="text" @input="$emit('update:text', $event.target.value)">`
        });

        app.mount('#app');
</script>
```

### 範例2：多重雙向綁定（多個輸入框）
```   
<div id="app" >
       {{ text1 }}<br>
       {{ text2 }}<br>
       <oldmoon v-model:text1="text1" v-model:text2="text2"></oldmoon>

</div>

<script>
        const app = Vue.createApp({
            data(){
                return{
                    text1:'輸入的文字1',
                    text2:'輸入的文字2'
                }
            }
        });

        app.component('oldmoon',{
            props:['text1','text2'],
            template:`<input :value="text1" @input="$emit('update:text1', $event.target.value)"><br>
                      <input :value="text2" @input="$emit('update:text2', $event.target.value)">`
        });

        app.mount('#app');
</script>
```