技术文摘
Vue 运用 v-model 达成表单双向绑定的技巧
2025-01-10 18:08:44 小编
在Vue开发中,v-model指令是实现表单双向数据绑定的关键工具,掌握其使用技巧能极大提升开发效率与用户体验。
v-model本质上是语法糖,它在表单元素(如input、select、textarea等)上创建双向数据绑定。以最常见的input输入框为例,我们可以这样使用:
<template>
<input v-model="message" />
<p>{{ message }}</p>
</template>
<script>
export default {
data() {
return {
message: ''
};
}
};
</script>
在上述代码中,v-model将input框的值与data中的message属性绑定。用户在输入框中输入的内容会实时更新到message中,同时message的变化也会立刻反映在输入框中。
对于单选框(radio),v-model也有巧妙的应用。比如有多个性别选项:
<template>
<input type="radio" v-model="gender" value="male" /> 男
<input type="radio" v-model="gender" value="female" /> 女
<p>您选择的性别是:{{ gender }}</p>
</template>
<script>
export default {
data() {
return {
gender: ''
};
}
};
</script>
这里v-model绑定到同一个gender变量上,不同的radio通过value属性区分不同选项,用户选择后,gender会得到对应的值。
处理复选框(checkbox)时,v-model的行为又有所不同。如果是单个复选框,它绑定的布尔值表示是否选中:
<template>
<input type="checkbox" v-model="isAgreed" /> 我同意协议
<p>是否同意:{{ isAgreed }}</p>
</template>
<script>
export default {
data() {
return {
isAgreed: false
};
}
};
</script>
若是多个复选框,我们可以将v-model绑定到一个数组上,用来收集选中的值:
<template>
<input type="checkbox" v-model="selectedFruits" value="apple" /> 苹果
<input type="checkbox" v-model="selectedFruits" value="banana" /> 香蕉
<input type="checkbox" v-model="selectedFruits" value="cherry" /> 樱桃
<p>您选择的水果是:{{ selectedFruits }}</p>
</template>
<script>
export default {
data() {
return {
selectedFruits: []
};
}
};
</script>
对于select下拉框,v-model同样适用:
<template>
<select v-model="selectedCity">
<option value="beijing">北京</option>
<option value="shanghai">上海</option>
<option value="guangzhou">广州</option>
</select>
<p>您选择的城市是:{{ selectedCity }}</p>
</template>
<script>
export default {
data() {
return {
selectedCity: ''
};
}
};
</script>
通过合理运用v-model在不同表单元素上的特性,我们能够轻松实现数据与视图的双向同步,为用户提供流畅的交互体验,打造高质量的Vue应用程序。
- CSS 类名命名选择:小驼峰与连字符,firstRow 还是 first-row?
- PC端设计图尺寸怎样选才能兼顾布局适配
- CSS中中文和数字长度判断不一致的原因
- contenteditable编辑框中Shift+Enter致结构混乱的解决方法
- contenteditable编辑器中Shift+Enter换行致结构紊乱的解决方法
- CSS border-image 在移动端表现不一致的原因
- Chrome中隐藏新开窗口地址栏的方法
- Vue3 用 ref 创建数组去重后为何出现 Proxy(Object) 数据
- Nginx代理在线上环境测试中的应用方法
- CSS 行内元素定位时换行首字符样式失效的解决办法
- 原生JavaScript实现表格滚动吸附,像Excel般精确控制滚动方法
- Vue 2 为何要注册两次 VueRouter,而 Vue 3 只需注册一次
- JavaScript 如何递归遍历树形结构数据并转为列表
- CSS 实现横向滚动列表的方法
- 不同分辨率下绝对定位元素偏移如何解决