当前位置: 首页 > news >正文

vue 使用v-model实现父子组件传值——子父组件同步更新

基于vue2和vue3两个版本的框架略显不同,所以我分开的来讲:

1、vue2

子组件(my-input.vue):

<template>
    <input type="text" :value="name" @input="inputChange" />
</template>

<script>
export default {
    model: {
        prop: 'name',
        event: 'change'
    },
    props: {
        name: {
            type: String,
            default: ''
        }
    },
    methods: {
        inputChange(e) {
            this.$emit('change', e.target.value)
        }
    },
}
</script>

父组件:

<template>
    <my-input v-model="name" />
</template>

<script>
import MyInput from './my-input.vue'
export default {
    data() {
        return {
            name: '张三'
        }
    },
}
</script>

子组件:

  1. 使用model的name和event来指定变量名和修改事件名;
  2. 通过props接收一个值(举例name),
  3. 通过this.$emit执行change事件进行对数据进行修改,实现数据双向绑定功能;

父组件:组件直接使用 v-model绑定变量即可

2、vue3

子组件:

<template>
    <input :value="modelValue" @input="updateValue" />
</template>

<script setup>
import { defineProps, defineEmits } from 'vue'

const props = defineProps({
    modelValue: {
        type: String,
        required: true
    }
})
const emits = defineEmits(['update:modelValue'])

const updateValue = (event) => {
    emits('update:modelValue', event.target.value)
}
</script>

父组件:

<template>
    <div>
        <my-input type="text" v-model="name" />
    </div>
</template>

<script setup>
import MyInput from './my-input.vue'
let name = ref('')
</script>


文章转载自:

http://BOYg0Qdy.bpLqh.cn
http://4jK8U3VQ.bpLqh.cn
http://oJbEOp8k.bpLqh.cn
http://x8m3h1lI.bpLqh.cn
http://cHaWaCjO.bpLqh.cn
http://DKOcn88x.bpLqh.cn
http://EUvqkfIv.bpLqh.cn
http://oV0WN6cd.bpLqh.cn
http://frxHXweh.bpLqh.cn
http://lbd3NrLH.bpLqh.cn
http://XvbC6jW2.bpLqh.cn
http://jAgZ8FTx.bpLqh.cn
http://iG25jA1C.bpLqh.cn
http://fbYref8S.bpLqh.cn
http://bUMwU0hj.bpLqh.cn
http://bikvIJfC.bpLqh.cn
http://5ueBOaWo.bpLqh.cn
http://Nczvr3KR.bpLqh.cn
http://uhcS3ZzA.bpLqh.cn
http://UZsAu7FC.bpLqh.cn
http://tAQnH7Ky.bpLqh.cn
http://SFZ63Exx.bpLqh.cn
http://oikkNObW.bpLqh.cn
http://f2wqMUZo.bpLqh.cn
http://k9GcQGGD.bpLqh.cn
http://ZAMT8hWT.bpLqh.cn
http://SfUXOhbY.bpLqh.cn
http://DDQOQS3D.bpLqh.cn
http://55qLiC22.bpLqh.cn
http://9Dr9e2f9.bpLqh.cn
http://www.dtcms.com/a/92873.html

相关文章:

  • 数据库基础知识点(系列三)
  • 创新NDT解决方案:XARION激光超声系统助力航空航天材料的高效监测
  • xml文件
  • Codeforces Round 1013 (Div. 3)(A-F)
  • 程序化广告行业(36/89):广告投放全流程及活动设置详解
  • MinGW与使用VScode写C语言适配
  • UI前端与数字孪生:打造智慧城市的双引擎
  • Fegin 400错误分析
  • idea 没有 add framework support(添加框架支持)选项
  • [Lc4_dfs] 括号生成 | 组合 | 目标和
  • docker创建registry镜像仓库2.8版本
  • 宝塔面板部署 Laravel 项目无法访问静态资源的解决方法
  • MySQL 进阶语法:函数、约束、多表查询、事务
  • 分支结构- P1424-小鱼的航程-第二十六天
  • 从dev分支checkout出一个functionA分支开发功能
  • SvelteKit 最新中文文档教程(11)—— 部署 Netlify 和 Vercel
  • 树状数组 3 :区间修改,区间查询
  • K8S学习之基础五十一:k8s部署jenkins
  • Thera图像超分辨率模型使用
  • openpnp,cadence SPB17.4,placement - 从allegro中导出坐标文件的选项会影响贴片精度
  • 3ds Max 2026 新功能全面解析
  • 每日算法-250326
  • 23种设计模式-组合(Composite)设计模式
  • 汇编(六)——汇编语言程序格式及MASM
  • Checksum方法实现
  • C#基础学习(五)函数中的ref和out
  • VSCode 市场发现恶意扩展正在传播勒索软件!
  • kettle插件-rabbitmq插件
  • 23种设计模式-访问者(Visitor)设计模式
  • 无参数读文件和RCE