v-model 的原理?
我们在vue项目中主要是用v-model指令在表单input、textarea、select等元素上创建双向绑定,我们知道v-model本质上不过是语法糖,v-model在内部为不同的输入元素使用不同的属性并抛出不同的事件:
-
text和textarea元素使用value属性和input事件
-
checkbox和radio使用checked属性和change事件
-
select字段将value作为prop并将change作为事件
- 以input表单元素为例:
- <input v-model = 'something'>
- 相当于
- <input v-bind:value='something' v-on:input='something=$event.target.value'>
如果在自定义组件中,v-model默认会利用名为value的prop和名为input的事件,如下所示: