# 如何自己实现v-model

# 实现一个v-model双向数据绑定

父组件如果给子组件传了v-model,子组件默认可以通过value来接收到父组件的属性值,如果不使用value可以通过自定义的model来实现。

//父组件
<template>
  <div id="app">
    <input type="text" v-model="val">
    <CustomModel v-model="val" @onChange=onChange />
  </div>
</template>

<script>
import CustomModel from './components/CustomModel.vue'

export default {
  name: 'App',
 components: {
    CustomModel
  },
  data(){
   return{
      val:'10'  
   }
  },
  methods:{
    onChange(val){
      console.log('父组件的值',val)
      this.val = val
    }
  },
}
</script>
//子组件
<template>
  <div>
    <input type="text" :value="aa" @input="change" />
  </div>
</template>
<script>
export default {
    //使用自定义的model
    model:{
        prop:'aa',
        event:'change'
    },
    //如果不使用自定义的model,可以使用 props:{ value:String }
  props: {
    aa: String,
  },
  methods: {
    change(event) {
      this.$emit('onChange',event.target.value)
    },
  },
};
</script>