Vue.js 数据绑定
在 Vue 中,数据和视图之间的同步更新是一大核心特性。本章会带你了解 Vue 的数据绑定机制,包括单向绑定和双向绑定的使用方式与适用场景,帮助你轻松实现数据驱动的页面。
单向绑定
Vue 的数据绑定默认是单向的(One-way Binding),也就是从数据(JavaScript)到视图(DOM)。你可以使用 {{ }}
插值表达式,也可以使用指令来绑定属性。
文本插值
<p>{{ message }}</p>
上面这行代码会把组件中 message
的值渲染成纯文本内容。
属性绑定
你可以使用 v-bind
指令将数据绑定到 HTML 属性上:
<img v-bind:src="imageUrl" alt="图片描述" />
<!-- 简写形式 -->
<img :src="imageUrl" />
除了 src
,你也可以绑定 href
、title
、id
等其他属性。
双向绑定
当你想要实现输入与数据的双向同步,可以使用 v-model
指令实现 双向绑定(Two-way Binding)。
<input v-model="username" />
<p>你输入的用户名是:{{ username }}</p>
v-model
的工作机制是:监听用户输入事件,并自动更新绑定的数据。
v-model
适用的表单元素
Vue 的 v-model
可以用于多种表单控件:
<input>
: 单行文本<textarea>
:多行文本<select>
:下拉选择<input type="checkbox">
:复选框<input type="radio">
:单选按钮
例如复选框:
<input type="checkbox" v-model="isChecked" />
<p>{{ isChecked }}</p>
或者单选按钮:
<input type="radio" v-model="picked" value="Option A" />
<input type="radio" v-model="picked" value="Option B" />
<p>你选择的是:{{ picked }}</p>
绑定 class 和 style
Vue 还支持通过数据绑定 class
和 style
,实现动态样式切换。
动态 class
你可以用对象语法:
<div :class="{ active: isActive, 'text-danger': hasError }"></div>
或者数组语法:
<div :class="[baseClass, isActive ? 'active' : '']"></div>