vue中自定义v-model

一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,可是像单选框、复选框等类型的输入控件可能会将 value 特性用于不一样的目的model 选项能够用来避免这样的冲突:spa

Vue.component('base-checkbox', {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: {
    checked: Boolean
  },
  template: `
    <input
      type="checkbox"
      v-bind:checked="checked"
      v-on:change="$emit('change', $event.target.checked)"
    >
  `
})

如今在这个组件上使用 v-model 的时候:code

<base-checkbox v-model="lovingVue"></base-checkbox>

这里的 lovingVue 的值将会传入这个名为 checked 的 prop。同时当 <base-checkbox> 触发一个 change 事件并附带一个新的值的时候,这个 lovingVue 的属性将会被更新。component

注:这里你仍然须要在组件的 props 选项里声明 checked 这个 prop。blog

相关文章
相关标签/搜索