父组件中

  1. <template>
  2. <p>{{name}}</p>
  3. <CustomVModel v-model="name" />
  4. </template>
  5. <script>
  6. import CustomVModel from '@/components/CustomVModel'
  7. export default {
  8. components: {
  9. CustomVModel
  10. },
  11. data () {
  12. return {
  13. name: '你的名字'
  14. }
  15. }
  16. }
  17. </script>

子组件中

展示如何自定义v-model

<template>
    <input 
    type="text" 
    :value="content" 
    @input="$emit('change', $event.target.value)" 
  />
</template>
<script>
export default {
    model: {
      prop: 'content',
    event: 'change'
  },
  props: {
      content: String
  }
}
</script>

所以,父组件中这样使用
<CustomVModel v-model="name" />
这里的 name 的值将会传到这个名为 content 的prop。同时当 CustomVModel 触发一个 change 事件并附带一个新值的时候,这个 name 的实例将会被更新

实例 颜色选择器

屏幕录制2020-11-07 下午4.22.01.mov (178.95KB)