一个组件上的 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