当前位置:首页 > 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:自动去除首尾空格。

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

相关文章

vue实现绑定herf

vue实现绑定herf

在 Vue 中绑定 href 的方法 Vue 中可以通过 v-bind 指令或简写 : 动态绑定 href 属性,支持绑定静态值、动态变量或计算属性。 静态绑定 <a href="h…

vue 双向实现原理

vue 双向实现原理

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

vue实现双休绑定

vue实现双休绑定

Vue 实现双向绑定 Vue.js 通过 v-model 指令实现双向绑定,主要用于表单输入元素(如 <input>、<textarea>、<select>)与组件…

vue实现双向滚动

vue实现双向滚动

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

vue实现事件绑定

vue实现事件绑定

Vue 事件绑定实现方法 Vue 提供了多种方式实现事件绑定,以下是常用方法: v-on 指令 使用 v-on 指令绑定事件监听器,语法为 v-on:event="handler" 或简写为 @ev…

vue怎样实现数组绑定

vue怎样实现数组绑定

Vue 实现数组绑定的方法 Vue 提供了多种方式来实现数组的绑定,以下是常见的几种方法: 使用 v-for 指令绑定数组 通过 v-for 指令可以遍历数组并渲染列表。语法如下: <ul&…