当前位置:首页 > VUE

vue实现双向绑定代码

2026-01-23 15:02:29VUE

Vue 双向绑定实现代码

Vue 的双向绑定主要通过 v-model 指令实现,它结合了 v-bind(属性绑定)和 v-on(事件监听)的功能。以下是几种常见场景的实现代码:

vue实现双向绑定代码

基础输入框绑定

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

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>

复选框绑定

<template>
  <div>
    <input type="checkbox" v-model="checked">
    <label>{{ checked ? '已选中' : '未选中' }}</label>
  </div>
</template>

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>

单选按钮绑定

<template>
  <div>
    <input type="radio" v-model="picked" value="选项A">
    <label>选项A</label>
    <input type="radio" v-model="picked" value="选项B">
    <label>选项B</label>
    <p>选择的是:{{ picked }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      picked: ''
    }
  }
}
</script>

下拉选择框绑定

<template>
  <div>
    <select v-model="selected">
      <option disabled value="">请选择</option>
      <option>选项1</option>
      <option>选项2</option>
      <option>选项3</option>
    </select>
    <p>选择的是:{{ selected }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: ''
    }
  }
}
</script>

自定义组件实现双向绑定

对于自定义组件,需要显式定义 model 选项并触发 input 事件:

vue实现双向绑定代码

<template>
  <div>
    <custom-input v-model="customValue"></custom-input>
    <p>组件值:{{ customValue }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      customValue: ''
    }
  },
  components: {
    'custom-input': {
      props: ['value'],
      model: {
        prop: 'value',
        event: 'input'
      },
      template: `
        <input 
          :value="value"
          @input="$emit('input', $event.target.value)">
      `
    }
  }
}
</script>

修饰符使用

Vue 为 v-model 提供了多个修饰符:

  • .lazy:将输入事件改为 change 事件触发
  • .number:自动将输入转为数字类型
  • .trim:自动去除首尾空格
<input v-model.lazy="msg">  <!-- 在change时更新 -->
<input v-model.number="age" type="number">  <!-- 自动转数字 -->
<input v-model.trim="text">  <!-- 自动去除空格 -->

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

相关文章

vue 双向实现原理

vue 双向实现原理

Vue 双向绑定的实现原理 Vue 的双向绑定主要通过 v-model 指令实现,其核心是结合数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。以下是具体实现机制…

vue怎么实现绑定

vue怎么实现绑定

数据绑定基础 Vue 通过 v-bind 指令实现单向数据绑定(数据从模型到视图),语法为 v-bind:属性="数据" 或简写为 :属性="数据"。例如绑定 src 属性: <img :…

vue双向绑定实现方式

vue双向绑定实现方式

Vue 双向绑定的实现方式 Vue 的双向绑定主要通过 v-model 指令实现,结合数据劫持和发布-订阅模式完成数据与视图的同步更新。以下是核心实现原理及方式: 数据劫持(响应式原理) Vue 使…

vue如何实现双向变电

vue如何实现双向变电

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

vue怎么实现input绑定

vue怎么实现input绑定

实现 Vue 中 input 绑定的方法 使用 v-model 指令实现双向绑定 v-model 是 Vue 提供的语法糖,用于实现表单元素与数据的双向绑定。它会根据输入框类型自动选取正确的方式更新数…

vue自己实现双向绑定

vue自己实现双向绑定

实现 Vue 双向绑定的核心原理 双向绑定的核心是通过数据劫持结合发布-订阅模式实现的。主要涉及 Object.defineProperty 或 Proxy 来监听数据变化,并通过观察者模式通知视图更…