vue 组件实现v-model

ChatgGPT4.0国内站点: 海鲸AI

在Vue中,可以通过使用v-model指令来实现双向数据绑定。如果你想在自定义组件中使用v-model,需要做一些额外的工作。

首先,在组件的props中定义一个名为value的属性,用于接收父组件传递的值。然后,在组件内部,通过$emit方法触发一个名为input的自定义事件,并将新的值作为参数传递给父组件。

以下是一个示例:

javascript 复制代码
<template>
  <input :value="value" @input="updateValue($event.target.value)">
</template>

<script>
export default {
  props: ['value'],
  methods: {
    updateValue(newValue) {
      this.$emit('input', newValue);
    }
  }
}
</script>

在父组件中,你可以像使用原生的v-model一样使用这个自定义组件:

javascript 复制代码
<template>
  <div>
    <custom-input v-model="message"></custom-input>
    <p>Message: {{ message }}</p>
  </div>
</template>

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

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

这样,当在custom-input组件中输入文本时,父组件中的message属性也会随之更新,实现了双向数据绑定。

相关推荐
程序员小寒25 分钟前
JavaScript设计模式(八):命令模式实现与应用
前端·javascript·设计模式·ecmascript·命令模式
wgod33 分钟前
new AbortController()
前端
UXbot39 分钟前
UXbot 是什么?一句指令生成完整应用的 AI 工具
前端·ai·交互·个人开发·ai编程·原型模式·ux
棒棒的唐1 小时前
WSL2用npm安装的openclaw,无法正常使用openclaw gateway start启动服务的问题
前端·npm·gateway
哔哩哔哩技术1 小时前
使用Compose Navigation3进行屏幕适配
前端
Z_Wonderful2 小时前
在 Next.js 中,使用 [id] 或 public 作为文件夹或文件名是两种完全不同的概念,分别对应 动态路由 和 静态资源托管
javascript·网络·chrome
咬人喵喵2 小时前
E2.COOL 平台深度解析:从特效分类到实战操作指南
前端·编辑器·svg
RisunJan3 小时前
Linux命令-named-checkzone
linux·前端
小陈工3 小时前
Python Web开发入门(十):数据库迁移与版本管理——让数据库变更可控可回滚
前端·数据库·人工智能·python·sql·云原生·架构
吹晚风吧3 小时前
解决vite打包,base配置前缀,nginx的dist包找不到资源
服务器·前端·nginx