vue3表单输入

125 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情juejin.cn/post/714765…

vue表单输入绑定

在前端处理表单时,我们常常需要将表单输入框的内容同步给js中相应的变量,手动连接值绑定和更改事件监听器可能会很麻烦。
要通过v-bind绑定相应数据,通过自定义input事件传入event事件返回表单实时输入的value值。

image.png
v-model指令帮我们简化了这一步骤:

image.png
另外,v-model还可以用于各种不同类型的输入,textarea,select元素,它会根据所使用的元素自动对应DOM属性和事件结合。

  • 文本类型的input和textarea元素会绑定value property并侦听input事件;
  • input type='checkbox和input type='radio'会绑定checked property并侦听change事件
  • select会绑定value property并侦听change事件; 注意:v-model会忽略任何表单元素上初始的value、checked或selected attribute。它将始终将当前绑定的js状态视为数据的正确来源。应该在js中使用data选项来声明该初始值。

v-model的基本用法

文本:

image.png
多行文本:

image.png
注意:多行文本textarea中是不支持插值表达式的。请使用v-model来替代:

image.png
复选框
有两种情况:单一的复选框,绑定的是布尔值:

image.png
如果是多个复选框的话,可以将多个复选框绑定到同一个数组或集合:
value值要与内容一致。输出的时候才会输出一致。
image.png

单选按钮

image.png

选择器

image.png

多选(值绑定到一个数组)

image.png

选择器的选项可以使用v-for动态渲染

image.png

值绑定

对于单选按钮、复选框和选择器选项,v-model绑定的值通常是静态的字符串(或者对复选框是布尔值)
但有时候我们希望将该值绑定到当前组件实例上的动态数据,这可以通过使用v-bind来实现。此外,使用v-bind还使我们可以将选项值绑定为非字符串的数据类型。

image.png
动态:

image.png

组件上的v-model

vue2中用在组件上的v-model展开的话如下:

image.png

image.png
但vue3中v-model用在组件上,展开是这样的:

image.png
所以按照之前那样拿值和传值是无法正常干工作的,需要做两件事情才能成功:

  1. 将内部原生input元素的value属性绑定到modelValue props
  2. 输入新的值时在input元素上触发update.modelValue事件
    代码如下:

image.png