当前位置:首页 > VUE

vue双向绑定实现案例

2026-02-23 22:49:41VUE

vue双向绑定实现案例

Vue 双向绑定实现案例

Vue 的双向绑定通过 v-model 指令实现,主要应用于表单元素(如 inputtextareaselect)。以下是具体实现案例:

vue双向绑定实现案例

基础输入框绑定

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

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>
  • v-model 绑定 message 数据,输入框的值变化会自动更新 message,反之亦然。

复选框绑定

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

<script>
export default {
  data() {
    return {
      checked: false
    }
  }
}
</script>
  • 复选框绑定布尔值,选中状态与 checked 同步。

下拉选择框绑定

<template>
  <div>
    <select v-model="selected">
      <option disabled value="">请选择</option>
      <option value="A">选项A</option>
      <option value="B">选项B</option>
    </select>
    <p>选择的值:{{ selected }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected: ''
    }
  }
}
</script>
  • v-model 绑定 selected,选项变化时自动更新数据。

自定义组件双向绑定

通过 model 选项和 $emit 实现自定义组件的双向绑定:

<!-- 父组件 -->
<template>
  <div>
    <CustomInput v-model="inputValue" />
    <p>父组件接收的值:{{ inputValue }}</p>
  </div>
</template>

<script>
import CustomInput from './CustomInput.vue'
export default {
  components: { CustomInput },
  data() {
    return {
      inputValue: ''
    }
  }
}
</script>

<!-- 子组件 CustomInput.vue -->
<template>
  <input 
    :value="value" 
    @input="$emit('input', $event.target.value)"
    placeholder="自定义输入"
  >
</template>

<script>
export default {
  model: {
    prop: 'value',
    event: 'input'
  },
  props: ['value']
}
</script>
  • 子组件通过 props 接收 value,并通过 $emit 触发 input 事件实现数据同步。

修饰符应用

<template>
  <div>
    <!-- 输入时延迟更新(.lazy) -->
    <input v-model.lazy="lazyMsg">
    <p>延迟更新:{{ lazyMsg }}</p>

    <!-- 自动转为数字(.number) -->
    <input v-model.number="age" type="number">
    <p>年龄类型:{{ typeof age }}</p>

    <!-- 去除首尾空格(.trim) -->
    <input v-model.trim="trimmed">
    <p>去空格后:"{{ trimmed }}"</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      lazyMsg: '',
      age: 0,
      trimmed: ''
    }
  }
}
</script>
  • .lazy:转为 change 事件后更新。
  • .number:将输入转为数字类型。
  • .trim:自动去除首尾空格。

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

相关文章

jquery绑定事件

jquery绑定事件

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

vue实现数组元素绑定

vue实现数组元素绑定

Vue 数组元素绑定方法 在 Vue 中实现数组元素绑定需要特别注意响应式更新的问题。以下是几种常见实现方式: 直接索引绑定(不推荐) 直接通过索引修改数组元素不会触发视图更新: this.arr…

vue中实现双向绑定

vue中实现双向绑定

Vue 双向绑定的实现方式 Vue 中实现双向绑定主要通过 v-model 指令,它结合了属性绑定和事件监听,适用于表单元素和自定义组件。 表单元素的双向绑定 在表单元素(如 input、texta…

vue双向数据怎么实现

vue双向数据怎么实现

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

vue动态绑定的实现

vue动态绑定的实现

Vue 动态绑定的实现方法 Vue 的动态绑定主要通过 v-bind 指令或简写 : 实现,用于动态地将数据绑定到 HTML 元素的属性上。以下是几种常见的动态绑定实现方式: 动态绑定属性 <…

vue如何实现表单绑定

vue如何实现表单绑定

Vue 表单绑定实现方法 Vue 提供了 v-model 指令实现表单元素的双向数据绑定,适用于多种输入类型。 文本输入框绑定 <input type="text" v-model="mess…