
2.5 表单输入绑定
2.5.1 双向绑定
MVVM模式最重要的一个特性就是双向绑定,而Vue作为一个MVVM框架,也实现了数据的双向绑定。在Vue中使用内置的v-model指令完成数据在View与Model间的双向绑定。
v-model会忽略所有表单元素的value、checked、selected attribute的初始值而将Vue实例的数据作为数据来源,因此应该通过JavaScript在组件的data选项中声明初始值。
2.5.2 v-model基本用法
当v-model使用在不同的表单元素上时,保存值的类型也是不同的,常见的表单元素数据绑定操作如下。
1.文本输入框
index.html文件代码如下:

在浏览器中运行的效果如图2.41所示。

图2.41 绑定文本输入框
2.文本域
index.html文件代码如下:

在浏览器中运行的效果如图2.42所示。

图2.42 绑定文本域
3.复选框
index.html文件代码如下:

在浏览器中运行的效果如图2.43所示。

图2.43 绑定复选框
4.单选按钮
index.html文件代码如下:

在浏览器中运行的效果如图2.44所示。

图2.44 绑定单选按钮
5.下拉选择框
index.html文件代码如下:

在浏览器中运行的效果如图2.45所示。

图2.45 绑定下拉选择框
2.5.3 修饰符
对于v-model指令,有3种常用的修饰符。
· lazy
· number
· trim
1.lazy修饰符
在输入框中,v-model默认为同步数据,使用lazy修饰符后会转变为在change事件中同步,即当输入框失去焦点时数据才会更新。
index.html文件代码如下:

在浏览器中运行,当输入内容时不会同步更新,如图2.46所示。当输入框失去焦点时,数据才会被更新,如图2.47所示。

图2.46 输入数据

图2.47 失去焦点时才更新数据
2.number修饰符
输入框默认输入的值为String类型,使用number修饰符可以将输入的值转化为Number类型,该修饰符经常使用在数字输入框中。
index.html文件代码如下:

在浏览器中运行,输入框的默认值为String类型,如图2.48所示。当输入数字时,值的类型会被转化为Number类型,如图2.49所示。

图2.48 输入框的默认值类型

图2.49 值的类型被转化为Number类型
3.trim修饰符
如果要自动过滤用户输入内容的首尾空格,可以给v-model添加trim修饰符。
index.html文件代码如下:

在浏览器中运行的效果如图2.50所示。

图2.50 trim修饰符效果