当前位置:首页 > VUE

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

2026-02-25 15:18:49VUE

使用 v-model 指令

Vue.js 提供了 v-model 指令用于实现表单元素与数据的双向绑定。v-model 会根据输入类型自动选择正确的方式更新数据。

示例代码:

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

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

v-model 默认绑定 value 属性并监听 input 事件,适用于 <input><textarea><select> 等表单元素。

自定义组件的双向绑定

在自定义组件中实现双向绑定,需使用 v-model 并定义 model 选项或通过 propsemit 实现。

方法 1:使用 v-modelemit

<template>
  <div>
    <custom-input v-model="customMessage"></custom-input>
    <p>自定义组件的内容:{{ customMessage }}</p>
  </div>
</template>

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

方法 2:使用 model 选项(Vue 2.x)

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

计算属性与 v-model

结合计算属性实现复杂逻辑的双向绑定,例如格式化输入内容。

示例:

<template>
  <div>
    <input v-model="formattedValue" placeholder="输入数字">
    <p>格式化后的值:{{ formattedValue }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rawValue: ''
    }
  },
  computed: {
    formattedValue: {
      get() {
        return this.rawValue;
      },
      set(value) {
        this.rawValue = value.replace(/\D/g, ''); // 只保留数字
      }
    }
  }
}
</script>

修饰符

v-model 支持修饰符以简化数据处理:

  • .lazy:将 input 事件改为 change 事件(失去焦点时更新)。
  • .number:自动将输入转为数字类型。
  • .trim:自动去除首尾空格。

示例:

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

<input v-model.lazy="lazyValue" placeholder="延迟更新">
<input v-model.number="numericValue" placeholder="转为数字">
<input v-model.trim="trimmedValue" placeholder="去除空格">

通过以上方法,可以灵活实现 Vue.js 中的双向绑定功能。

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

相关文章

vue数据实现双向绑定

vue数据实现双向绑定

Vue 数据双向绑定的实现原理 Vue 的数据双向绑定主要通过 v-model 指令实现,结合了数据绑定和事件监听。以下是核心实现方式: 使用 v-model 指令 v-model 是语法糖,自动绑…

实现vue双向绑定

实现vue双向绑定

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

vue双向数据绑定实现

vue双向数据绑定实现

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

怎么实现vue双向绑定

怎么实现vue双向绑定

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

.vue 双向绑定实现原理

.vue 双向绑定实现原理

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

vue双向数据怎么实现

vue双向数据怎么实现

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