所有表单元素上的 v-model
输入框、文本区域、选择框、复选框和单选框——了解 v-model 如何适配不同元素类型。
所有表单元素上的 v-model 是 CoddyKit 上的免费 Vue Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Vue Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Vue Academy 课程共包含 4 节课。
绑定表单输入
v-model 会在表单控件与响应式状态之间创建双向绑定。每种控件——文本框、复选框、单选按钮、选择框和文本区域——使用 v-model 的方式略有不同。本课将全部介绍。
文本输入框
在文本输入框上,v-model 会绑定其值,并在输入时更新。请在框中输入内容,引用的值就会实时更新。
<script setup>
import { ref } from 'vue'
const name = ref('')
</script>
<template>
<input v-model="name" />
<p>Hello, {{ name }}</p>
</template>文本区域
文本区域的工作方式与文本输入框一样。请直接在元素上使用 v-model,不要在标签之间放置文本。
<template>
<textarea v-model="message"></textarea>
</template>复选框:布尔值
绑定到布尔值引用的单个复选框会在 true 和 false 之间切换。
<script setup>
import { ref } from 'vue'
const agreed = ref(false)
</script>
<template>
<input type="checkbox" v-model="agreed" />
<p>Agreed: {{ agreed }}</p>
</template>复选框:绑定多个复选框到数组
将多个复选框绑定到同一个数组引用。每个选中的复选框都会将其 value 添加到数组中。
<script setup>
import { ref } from 'vue'
const hobbies = ref([])
</script>
<template>
<input type="checkbox" value="reading" v-model="hobbies" />
<input type="checkbox" value="coding" v-model="hobbies" />
<p>{{ hobbies }}</p>
</template>单选按钮
同一组中的单选按钮共享一个引用。该引用保存所选选项的 value。
<script setup>
import { ref } from 'vue'
const picked = ref('')
</script>
<template>
<input type="radio" value="small" v-model="picked" />
<input type="radio" value="large" v-model="picked" />
<p>Picked: {{ picked }}</p>
</template>选择框:单选
单选选择框会绑定到与所选选项匹配的值。如果需要,您可以提供一个空值的占位选项。
<script setup>
import { ref } from 'vue'
const city = ref('')
</script>
<template>
<select v-model="city">
<option value="">Choose</option>
<option value="paris">Paris</option>
<option value="tokyo">Tokyo</option>
</select>
</template>选择框:多选
添加 multiple 属性并绑定到数组。选中的选项会收集到该数组中。
<script setup>
import { ref } from 'vue'
const cities = ref([])
</script>
<template>
<select v-model="cities" multiple>
<option value="paris">Paris</option>
<option value="tokyo">Tokyo</option>
</select>
</template>值修饰符
修饰符可以细化双向绑定的行为:.trim 会移除空白,.number 会转换为数字,而 .lazy 会在值变化时同步,而不是在每次按键时同步。
<input v-model.number="age" />
<input v-model.trim="username" />
<input v-model.lazy="note" />统一的理解方式
无论是哪种控件,v-model 都是传入值、传出变化。控件类型只决定值的形态:布尔值、字符串或数组。
自定义输入组件
v-model 也适用于您自己的组件。自定义输入组件声明一个 modelValue 属性并发出 update:modelValue 事件,因此对父组件来说,它的行为就像原生控件一样。
<!-- parent -->
<MyTextInput v-model="name" />
<!-- child declares modelValue + emits update:modelValue -->快速检查
请测试您对表单绑定的掌握程度。
回顾
表单控件中的双向绑定:
- 文本输入框和文本区域绑定字符串。
- 单个复选框绑定布尔值;多个复选框绑定数组。
- 单选按钮共享一个保存所选值的引用。
- 选择框绑定一个值;添加
multiple后绑定数组。 - 修饰符:
.trim、.number、.lazy。
常见问题解答
「所有表单元素上的 v-model」课时是免费的吗?
是的 — 「所有表单元素上的 v-model」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Vue Academy 课程的其余内容,请升级到 CoddyKit PRO。 Vue Academy 课程共包含 4 节课。
「所有表单元素上的 v-model」这节课中我会学到什么?
输入框、文本区域、选择框、复选框和单选框——了解 v-model 如何适配不同元素类型。 你通过在浏览器中直接运行的动手代码来练习 Vue Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Vue Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Vue Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「所有表单元素上的 v-model」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Vue Academy 课中编写并运行代码吗?
能。每节 Vue Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 所有表单元素上的 v-model
- 表单提交与重置
- 手动验证模式
- 使用 VeeValidate 进行基于模式的验证