v-model基本用法
表单控件在实际业务较为常见,比如单选、多选、下拉选择、输入框等,用它们可以完成数据的录入、校验、提交等。 Vue 提供了 v-model
指令,用于在表单类元素上双向绑定数据。
注意事项
- 使用
v-model
后,表单控件显示的值只依赖所绑定的数据,不再关心初始化时的value
属性(解耦初始化value属性)。 - 对于
< textarea></textarea>
之间插入的值,不会生效(覆盖文本域)。 - 使用
v-model
时,如果是用中文输入法输入中文,一般在没有选定饲组前,也就是在拼音阶段, Vue 是不会更新数据的,当敲下汉字时才会触发更新。如果希望总是实时更新,可以用@input
来替代v-model
,只不过v-model
会在不同的表单上进行智能处理。
单选框/按钮
- 单独使用
单选按钮在单独使用时,官方文档标明不需要v-model
,可以直接使用v-bind
绑定布尔类型为真选中,为否时不选。
但不推荐使用v-bind进行绑定,建议用v-model
配合value
使用。 - 组合使用
如果是组合使用来实现互斥选择效果。
数据profession
值与单选按钮的value
值一致时,就会选中该项。
复选框/多选按钮
复选框也分单独使用和组合使用,不过用法稍与单选不同。
- 单独使用
复选框单独使用时,是用v-model
来绑定一个布尔值。(注意:虽然v-bind
绑定后的效果也一样,但只是效果一样,数据并未发生改动) - 因为
v-bind
绑定单个多选按钮无法实现数据驱动,所以单独使用复选框时,语法指令为v-model
- 组合使用
组合使用时,也是v-model
与value
一起,多个勾选框都绑定到同一个数组类型的数据,value
的值在数组当中,就会选中这一项。这一过程是双向的,在勾选时value
的值也会自动push
这个数组中,示例代码如下:
Vue实现全选与全不选1
利用vue的双向数据绑定v-model
命令,当勾选时,checkbox
的value
值会自动push
到所绑定的数组checkData
中去,即结合value
和v-model
。
下拉选择列表
选择列表就是下拉选择器,也是常见的表单控件,同样也分为单选和多选两种方式。
- 单选
<option>
是备选项,如果含有value
属性v-model
就会 先匹配value
。
如果没有就会直接匹配<option>
的text
。
比如选中第二项时selected
的值是 js 而不是 JavaScript。 - 多选
给<selected>
添加属性multiple
就可以多选了, 此时v-model
绑定的是一个数组。与复选框用法类似,多选:按住Ctrl+点击即可。
表单输入绑定修饰符
- lazy延迟修饰符
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步: - number数字修饰符
这通常很有用,因为即使在type="number"
时,HTML 输入元素的值也总会返回字符串。如果想自动将用户的输入值转为数值类型,可以给v-model
添加number
修饰符。 - 过滤空白修饰符
给v-model
添加trim
修饰符,可以自动过滤用户输入的首尾空白字符。