当前位置:首页 > VUE

vue简单实现双向绑定

2026-01-20 12:53:07VUE

Vue 双向绑定的简单实现

Vue 的双向绑定核心是通过 v-model 指令实现的,它结合了 v-bindv-on 的功能。以下是一个简单的实现方式:

模板部分

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

脚本部分

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

手动实现双向绑定

如果需要手动实现类似 v-model 的功能,可以通过以下方式:

vue简单实现双向绑定

模板部分

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

脚本部分

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

自定义组件实现双向绑定

在自定义组件中实现双向绑定,需要使用 model 选项和 $emit

vue简单实现双向绑定

子组件

<template>
  <input 
    :value="value" 
    @input="$emit('input', $event.target.value)"
  >
</template>

<script>
export default {
  props: ['value'],
  model: {
    prop: 'value',
    event: 'input'
  }
}
</script>

父组件

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

<script>
import CustomInput from './CustomInput.vue'

export default {
  components: { CustomInput },
  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
      },
      set(value) {
        this.rawMessage = value.toUpperCase()
      }
    }
  }
}
</script>

以上方法展示了 Vue 中实现双向绑定的不同方式,从最简单的 v-model 到自定义组件的实现,以及使用计算属性处理复杂逻辑的场景。

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

相关文章

实现vue双向绑定

实现vue双向绑定

Vue双向绑定的实现原理 Vue的双向绑定主要通过数据劫持结合发布-订阅模式实现。核心是利用Object.defineProperty()或ES6的Proxy来劫持各个属性的getter和setter…

vue样式绑定实现收藏

vue样式绑定实现收藏

Vue 样式绑定实现收藏功能 在 Vue 中,可以通过动态绑定样式来实现收藏功能,常见的方法是使用 v-bind:class 或 v-bind:style 来切换样式状态。 使用 v-bind:cl…

react如何绑定事件

react如何绑定事件

React 事件绑定方法 在 React 中绑定事件有多种方式,以下是常见的几种方法: 使用 onClick 或其他事件属性直接绑定 <button onClick={() => co…

实现vue数组双向绑定

实现vue数组双向绑定

Vue 数组双向绑定的实现方法 Vue 通过数据劫持和发布-订阅模式实现数据的双向绑定,但直接修改数组的某些方法(如索引赋值)无法触发视图更新。以下是实现数组双向绑定的几种方法: 使用 Vue.se…

vue双向数据实现

vue双向数据实现

Vue 双向数据绑定的实现原理 Vue 的双向数据绑定主要通过 v-model 指令实现,其核心是基于数据劫持和发布-订阅模式。 数据劫持(响应式原理) Vue 使用 Object.definePr…