vue里面的v-model的基本使用

339 阅读2分钟

表单提交是开发中非常常见的功能,也是和用户交互的重要手段:

比如用户在登录、注册时需要提交账号密码;

比如用户在检索、创建、更新信息时,需要提交一些数据;

这些都要求我们可以在代码逻辑中获取到用户提交的数据,我们通常会使用v-model指令来完成:

v-model指令可以在表单 input、textarea以及select元素上创建双向数据绑定;

它会根据控件类型自动选取正确的方法来更新元素;

尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件来更新数据,并在某种极端场景 下进行一些特殊处理。 v-model的原理进行简写如下 v-bind绑定value的值,v-on绑定input的输入事件

image.png

绑定到textarea

image.png

绑定到多选框 我们来看一下v-model绑定checkbox:单个勾选框和多个勾选框

单个勾选框: v-model即为布尔值。 此时input的value并不影响v-model的值。

多个复选框: 当是多个复选框时,因为可以选中多个,所以对应的data中属性是一个数组。 当选中某一个时,就会将input的value添加到数组中。

image.png

另外有一个v-model修饰符.lazy

lazy修饰符是什么作用呢?

默认情况下,v-model在进行双向绑定时,绑定的是input事件,那么会在每次内容输入后就将最新的值和绑定的属性进行同步;

如果我们在v-model后跟上lazy修饰符,那么会将绑定的事件切换为 change 事件,只有在提交时(比如回车)才会触发;

v-model 的number修饰符

我们先来看一下v-model绑定后的值是什么类型的: message总是string类型,即使在我们设置type为number也是string类型; 如果我们希望转换为数字类型,那么可以使用 .number 修饰符: 另外,在我们进行逻辑判断时,如果是一个string类型,在可以转化的情况下会进行隐式转换的: 下面的score在进行判断的过程中会进行隐式转化的;