v-model的基本使用
表单提交是开发中非常常见的功能,也是和用户交互的重要手段
- 比如在登录、注册时需要提交账号密码
- 比如用户在检索、创建、更新信息时,需要提交一些数据
这些都要求我们可以在代码逻辑中获取到用户提交的数据,我们通常会使用v-model指令来完成:
- v-model指令可以在表单input、textarea以及select元素上创建双向绑定
- 它会根据控件类型自动选取正确的方法来更新元素
尽管有些神奇,但v-model本质上不过是语法糖,它负责监听用户的输入事件来更新数据,并在某些极端情况下进行一些特殊处理
v-model原理
官方有说到,v-model的原理其实是背后有两个操作:
v-bind绑定value属性的值
v-on绑定input事件监听到函数中,函数会获取最新的赋值到绑定的属性中
<input v-model="searchText" />
等价于
<input :value="searchText" @input="searchText = $event.target.value">
事实上v-model更加复杂
v-model的修饰符使用
lazy
lazy修饰符是什么作用呢?
默认情况下,v-model在进行双向绑定时,绑定的是input事件,那么会在每次内容输入后就将最新的值和绑定的属性进行同步
- 如果我们在v-model后跟上lazy修饰符,那么会将绑定的事件切换为change事件,只有在提交时(比如回车)才会触发
number
我们data中的数据可以一开始就赋值为数字类型,但是一旦进行修改,那么就会变成字符串类型,如果希望它一直是数字类型,可以使用number修饰符
补充:虽然是字符串类型,但是依然可以进行数字类型的运算等操作,是因为js的隐式类型转换trim
去除两边的空格