当前位置:首页 > VUE

vue实现双向

2026-01-07 22:42:19VUE

Vue 实现双向绑定的方法

Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 inputselecttextarea 等)。以下是几种常见的实现方式:

使用 v-model 指令

v-model 是 Vue 提供的语法糖,自动将表单元素的值与 Vue 实例的数据属性绑定。

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

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

自定义组件实现双向绑定

在自定义组件中,可以通过 model 选项和 $emit 事件实现双向绑定。

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

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

使用 .sync 修饰符

Vue 2.x 中可以使用 .sync 修饰符实现父子组件的双向绑定。

<template>
  <custom-input :value.sync="syncMessage"></custom-input>
  <p>使用 .sync 的值: {{ syncMessage }}</p>
</template>

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

Vue 3 的 v-model 改进

Vue 3 中 v-model 支持多个绑定,且默认使用 modelValueupdate:modelValue

vue实现双向

<template>
  <custom-input v-model="vue3Message"></custom-input>
  <p>Vue 3 的值: {{ vue3Message }}</p>
</template>

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

注意事项

  • v-model 默认绑定的是 value 属性和 input 事件(表单元素)。
  • 自定义组件时需明确 prop 和事件名(如 model 选项或 Vue 3 的 modelValue)。
  • 避免直接修改父组件传递的 props,应通过事件通知父组件更新。

标签: 双向vue
分享给朋友:

相关文章

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于需…

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…

vue实现layout

vue实现layout

Vue 实现 Layout 布局的方法 在 Vue 中实现 Layout 布局通常涉及路由嵌套、组件化设计和动态渲染。以下是几种常见的实现方式: 使用嵌套路由 通过 Vue Router 的嵌套路由…

vue实现ftp

vue实现ftp

Vue 中实现 FTP 功能 Vue 本身是一个前端框架,无法直接操作 FTP 协议(FTP 通常需要后端支持)。以下是两种常见实现方式: 前端与后端配合实现 FTP 前端通过 API 与后端通信,…

vue列表查询实现

vue列表查询实现

实现 Vue 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

vue  实现关联属性

vue 实现关联属性

Vue 实现关联属性 在 Vue 中实现关联属性通常涉及计算属性(computed properties)或侦听器(watchers),用于根据其他属性的变化动态更新目标属性。 使用计算属性 计算属…