v-model| 青训营笔记


theme: condensed-night-purple

highlight: a11y-dark

这是我参与「第四届青训营 」笔记创作活动的的第20天

表单控件在实际开发中是非常常见的。特别是对于用户信息的提交,需要大量的表单。 Vue中使用v-model指令来实现表单元素和数据的双向绑定。

v-model原理

v-model其实是一个语法糖,它的背后本质上是包含两个操作︰

  1. v-bind绑定一个value属性
  2. v-on指令给当前元素绑定input事件 ```
{ {messege}}

```

数据双向绑定

默认情况下Vue只支持数据单向传递 M-> VM -> V 但是由于Vue是基于MVVM设计模式的,所以也提供了双向传递的能力 在<input><textarea><select> 元素上可以用 v-model 指令创建双向数据绑定

注意点:v-model会忽略所有表单元素的 value、checked、selected 特性的初始值 而总是将 Vue实例 的数据作为数据来源

input值绑定

仔细阅读之后,发现很简单,就是动态的给value赋值而已: 我们前面的value中的值,可以回头去看一下,都是在定义input的时候直接给定的。 但是真实开发中,这些input的值可能是从网络获取或定义在data中的。 所以我们可以通过v-bind:value动态的给value绑定值。 这不就是v-bind吗?

```html

{ {hobbies}}

```

修饰符

lazy修饰符∶

默认情况下, v-model默认是在input事件中同步输入框的数据的。 也就是说,—旦有数据发生改变对应的data中的数据就会自动发生改变。

lazy修饰符可以让数据在失去焦点或者回车时才会更新:

1) input事件在用户输入的时候会实时地、连续地触发 2) blur事件在输入框失去焦点时触发; 3) change事件在用户输入的值与上一次输入的值不同。并且输入框失去焦点时触发。

number修饰符:

默认情况下,在输入框中无论我们输入的是字母还是数字,都会被当做字符串类型进行处理。 但是如果我们希望处理的是数字类型,那么最好直接将内容当做数字处理。

number修饰符可以让在输入框中输入的内容自动转成数字类型

trim修饰符:

如果输入的内容首尾有很多空格,通常我们希望将其去除

trim修饰符可以过滤内容左右两边的空格

```

{ {messege}}

{ {age}}--{ {typeof age}}

你输入的名字:{ {name}}

```

v-model:radio

相同的name,在提交表单时只会提交一份,所以会互斥

label是将内容绑到一起,不用必须点击圆圈

```

您选择的性别是:{ {gender}}

```

v-model:checkbox

复选框分为两种情况∶单个勾选框和多个勾选框 复选框绑定的值是字符串类型的时候获得布尔值,如果是数组则是取value值 要获取多个value只能使用数组[],不能使用对象或者其他

```

{ {isAgree}}

{ {hobbies}}

```

v-model:select

和checkbox一样,select也分为单选和双选两种情况

单选:只能选中一个值。 v-model绑定的是一个值。 当我们选中option中的一个时,会将它对应的value赋值到mySelect中 多选:可以选中多个值。 v-model绑定的是一个数组。 当选中多个值时,就会将选中的option对应的value添加到数组mySelects中 ```

{ {drink}}

{ {drinks}}

```

猜你喜欢

转载自blog.csdn.net/weixin_50945128/article/details/129377795