v-model中的实现原理,如何自定义v-model

196 阅读1分钟
  1. v-model是 value + input的语法糖
  2. 可以绑定v-model的有表单:input,checkbox,select,textarea,radio
  3. 自定义实现一个v-model:
  • 父组件传入v-model
  • 子组件定义model属性,接收value跟event,
  • props接收value
  • 事件改变emit event事件,参数是需要改变的值
自定义示例:
// 父组件
<course-add v-model="course"></course-add>

// 子组件
    Vue.component('course-add', {
      props: ['val'],
      model: {
        value'val',
        event'change'
      },
      template: `
        <div>
            <input type="text" :value="val" 
              @change="onChange"
              v-on:keydown.enter="addCourse"
              ref="inp" v-focus>
        </div>
      `,
      methods: {
        onChange(e) {
          this.$emit('change', e.target.value)
        }

      },

    })