当前位置:首页 > VUE

vue简单实现双向绑定

2026-02-21 04:52:28VUE

双向绑定的基本实现

Vue 的双向绑定核心是通过 v-model 指令实现的,它结合了 v-bind(属性绑定)和 v-on(事件监听)。以下是一个简单的示例:

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

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

手动实现双向绑定

如果不使用 v-model,可以通过 v-bindv-on 手动实现双向绑定:

<template>
  <div>
    <input 
      :value="message" 
      @input="message = $event.target.value" 
      placeholder="输入内容"
    >
    <p>输入的内容是: {{ message }}</p>
  </div>
</template>

自定义组件中的双向绑定

在自定义组件中实现双向绑定,需要显式定义 model 选项并触发 input 事件:

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

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

使用计算属性实现复杂绑定

如果需要处理复杂逻辑,可以使用计算属性实现双向绑定的衍生功能:

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

<script>
export default {
  data() {
    return {
      rawMessage: ''
    }
  },
  computed: {
    computedMessage: {
      get() {
        return this.rawMessage.toUpperCase();
      },
      set(value) {
        this.rawMessage = value.toLowerCase();
      }
    }
  }
}
</script>

修饰符的使用

Vue 的 v-model 提供了一些修饰符,可以简化数据处理:

vue简单实现双向绑定

  • .lazy:将 input 事件改为 change 事件(失焦后更新)
  • .number:自动将输入转为数字类型
  • .trim:自动去除首尾空格
<input v-model.lazy="message">
<input v-model.number="age" type="number">
<input v-model.trim="text">

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

相关文章

vue数据实现双向绑定

vue数据实现双向绑定

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

jquery绑定事件

jquery绑定事件

jQuery 绑定事件的方法 jQuery 提供了多种方式来绑定事件,以下是常见的几种方法: on() 方法 on() 是最推荐的事件绑定方法,支持动态元素和多个事件绑定。 $(selector)…

php实现双向队列

php实现双向队列

PHP 实现双向队列的方法 双向队列(Deque,Double-ended Queue)是一种允许在队列两端进行插入和删除操作的数据结构。PHP 中可以通过数组或 SplDoublyLinkedLis…

实现vue动态绑定

实现vue动态绑定

动态绑定的基本语法 在Vue中,使用v-bind指令或简写:实现动态绑定,将数据属性与HTML元素的属性关联起来。例如动态绑定class或style: <div v-bind:class="{…

vue实现双向滚动

vue实现双向滚动

实现双向滚动的 Vue 方法 双向滚动通常指两个关联的滚动区域(如表格的头部和内容部分)同步滚动。以下是几种实现方式: 使用事件监听和 scroll 方法 通过监听一个滚动区域的 scroll 事件…

vue双向绑定实现

vue双向绑定实现

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