【面试】v-model实现原理

87 阅读1分钟

v-model本质上是一个语法糖 其实就是做了两件事

(1)父传子 :value="data属性"

(2)子传父 @input="data属性"=$event.target.value ``

```<template>
  <div>
    <h1>我是父组件</h1>
    <!-- 
      1.v-model:让表单和data数据建立双向绑定
        (1)data数据变化,表单值也会变化
        (2)表单值变化,data数据也会变化  @input="data属性 =$event.target.value" 
      2.v-model本质是一个语法糖
        (1)父传子   :value="data属性"
        (2)子传父   @input="data属性"=$event.target.value
     -->
    <input type="text" v-model="msg">
    <MyGoods :value="price" @input="price = $event"></MyGoods>
    <!-- 
      只要看到一个组件使用了v-model,相当于两个操作
      (1)父传子   :value = "data属性"
      (2)子传父   @input="data属性 = $event"
     -->
    <MyGoods v-model="price"></MyGoods>
  </div>
</template>

<script>
import MyGoods from '@/components/MyGoods.vue'
export default {
  components:{MyGoods},
  data(){
    return{
      msg:'',
      price:100
    }
  }
}
</script>