0Pricing
Vue Academy · 课时

所有表单元素上的 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 所有表单元素上的 v-model
  2. 表单提交与重置
  3. 手动验证模式
  4. 使用 VeeValidate 进行基于模式的验证
← 返回 Vue Academy