当前位置:首页 > JavaScript

怎么用vue.js实现双向绑定

2026-04-04 12:42:15JavaScript

使用 Vue.js 实现双向绑定

Vue.js 的双向绑定主要通过 v-model 指令实现,它结合了 v-bindv-on 的功能,能够自动同步表单输入与应用状态。

基础用法

在模板中直接使用 v-model 绑定数据:

<input v-model="message" placeholder="输入内容">
<p>输入的内容是:{{ message }}</p>

对应的 JavaScript 部分:

new Vue({
  el: '#app',
  data: {
    message: ''
  }
})

表单元素绑定

v-model 适用于不同类型的表单元素:

  • 复选框(单个):

    <input type="checkbox" v-model="checked">
    <span>Checked: {{ checked }}</span>
  • 复选框(多个):

    <input type="checkbox" value="A" v-model="checkedItems">
    <input type="checkbox" value="B" v-model="checkedItems">
    <span>Checked items: {{ checkedItems }}</span>
  • 单选按钮

    <input type="radio" value="One" v-model="picked">
    <input type="radio" value="Two" v-model="picked">
    <span>Picked: {{ picked }}</span>
  • 下拉选择框

    <select v-model="selected">
      <option disabled value="">请选择</option>
      <option>A</option>
      <option>B</option>
    </select>
    <span>Selected: {{ selected }}</span>

修饰符

Vue 提供了 v-model 的修饰符来调整行为:

  • .lazy:将输入事件改为 change 事件后同步

    <input v-model.lazy="msg">
  • .number:自动将输入转为数值类型

    <input v-model.number="age" type="number">
  • .trim:自动去除首尾空白字符

    <input v-model.trim="msg">

自定义组件实现双向绑定

在自定义组件中实现 v-model 需要:

  1. 组件内部通过 value prop 接收值
  2. 在需要时触发 input 事件来更新值
Vue.component('custom-input', {
  props: ['value'],
  template: `
    <input
      :value="value"
      @input="$emit('input', $event.target.value)"
    >
  `
})

使用方式与原生元素相同:

<custom-input v-model="searchText"></custom-input>

高级用法

对于需要更复杂绑定的场景,可以在组件中指定 model 选项:

Vue.component('my-checkbox', {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: {
    checked: Boolean
  },
  template: `
    <input
      type="checkbox"
      :checked="checked"
      @change="$emit('change', $event.target.checked)"
    >
  `
})

响应式原理

Vue 的双向绑定基于响应式系统实现:

怎么用vue.js实现双向绑定

  • 使用 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)追踪数据变化
  • 通过发布-订阅模式通知相关依赖进行更新
  • 结合虚拟 DOM 差异算法高效更新视图

注意事项

  • 对于复杂对象,需要确保属性是响应式的
  • 数组变更需要通过 Vue 提供的变异方法(如 push, pop 等)触发更新
  • 在 Vue 3 中,v-model 的默认 prop 从 value 改为 modelValue,事件从 input 改为 update:modelValue

标签: 绑定双向
分享给朋友:

相关文章

vue双向数据绑定实现

vue双向数据绑定实现

双向数据绑定的概念 双向数据绑定是指视图(View)与模型(Model)之间的双向同步。当数据发生变化时,视图自动更新;当用户操作视图时,数据也会自动更新。Vue 通过 v-model 指令实现双向数…

vue实现数组双向绑定

vue实现数组双向绑定

实现数组双向绑定的方法 在Vue中,实现数组的双向绑定通常需要结合v-model指令或自定义事件处理。以下是几种常见的方法: 使用v-model绑定数组 Vue的v-model指令默认支持表单元素的…

vue双向绑定原理实现

vue双向绑定原理实现

Vue 双向绑定原理实现 Vue 的双向绑定核心是通过数据劫持结合发布-订阅模式实现的,主要依赖 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)来监听数据…

vue如何实现双向变电

vue如何实现双向变电

Vue 双向绑定实现方法 Vue 中实现双向绑定的核心是通过 v-model 指令,它结合了 v-bind 和 v-on 的功能,简化了表单元素与数据的同步操作。 基础用法 在表单元素上直接使用 v…

vue双向数据怎么实现

vue双向数据怎么实现

Vue 双向数据绑定的实现 Vue 的双向数据绑定主要通过 v-model 指令实现,结合数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式完成数据与视图的同步更新…

vue绑定图片实现默认

vue绑定图片实现默认

vue绑定图片实现默认的方法 在Vue中绑定图片并设置默认图片,可以通过多种方式实现。以下是几种常见的方法: 使用v-bind绑定图片路径 在模板中使用v-bind指令绑定图片路径,同时设置默认图…