Vue:自定义v-model数据双向绑定

简介: Vue:自定义v-model数据双向绑定

示例

age 数据单向绑定

name 数据双向绑定


<template>
    <div>
        <h3>单向绑定数据</h3>
        <p>age: {
        { age }}</p>
        <p>age: <input type="text" :value="age"></p>
        
        <h3>双向绑定数据</h3>
        <p>name: {
        {name}}</p>
        <p>name: <input type="text" :value="name" @input="name=$event.target.value"></p>
    </div>
</template>


<script>
export default {
    data(){
        return {
            age: 23,
            name: "王小二"
        }
    }
}

</script>

d23.2.png


观察代码发现,name的input 多了一个事件绑定@input="name=$event.target.value"

所以,实现数据双向绑定的原理就是:

1、数据name单向传递给input;

2、input触发事件后将name的值进行了修改

自定义v-model双向绑定

child.vue

<template>
<input type="text" :value="age" @input="change($event.target.value)">
</template>


<script>
export default {
props: ["age"],

model: {
prop: "age", // 对应的变量
event: "change" // 触发事件
},

methods: {
// 把修改后的值传递回去
change(value){
console.log(value)
this.$emit('change', value)
}
}
}

</script>


main.vue

<template>
<div>
<h3>子组件v-model示例</h3>

<p>age: { {age}}</p>

<p>age: <Child v-model="age"/></p>
</div>
</template>


<script>
import Child from './child.vue';

export default {
components: {
Child
},

data(){
return {
age: 23,
}
}
}

</script>

启动调试

$ vue serve main.vue

d23.3.png


这样就实现了自定义v-model语法

原理很简单

1、父组件给子组件传值
2、子组件值修改,触发事件修改父组件值
3、父组件再将新值传递给了子组件,子组件的接收到父组件变更的值

所以还是数据还是单向流动

参考:

  1. Vue之自定义组件的v-model
  2. vue自定义组件上的v-model如何与子组件数据绑定
            </div>
目录
相关文章
|
数据采集 自然语言处理 文字识别
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(下)
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(下)
890 0
|
Java 程序员 Apache
免费申请和使用IntelliJ IDEA商业版License指南
IntelliJ IDEA是广受Java开发者喜爱的工具,其商业版的价格十分昂贵,现在有机会免费获取IntelliJ IDEA的正版License,您是否心动呢?咱们一起行动吧
1000 0
免费申请和使用IntelliJ IDEA商业版License指南
|
10月前
|
缓存 前端开发 搜索推荐
前端性能优化实战:提升网页加载速度
前端性能优化实战:提升网页加载速度
215 1
|
边缘计算 运维 安全
云上物联网边缘节点:重塑连接智能世界的桥梁
结语 云上物联网边缘节点作为物联网技术的重要组成部分,正以其独特的优势和潜力推动着物联网的快速发展。面对未来的机遇和挑战,我们需要不断创新和完善边缘节点的技术架构和应用模式,推动物联网技术的深度融合和广泛应用,为构建智慧社会贡献力量。
335 0
|
JavaScript Java Go
sonar 使用常见问题总结
Sonar 是一个开源平台,用于管理源代码质量的工具。Sonar 不只是一个质量数据报告工具,更是代码质量管理的平台。它支持非常多的语言,包括常见的 Java、PHP、C#、C、Golang、JS等。在安装部署和使用的过程会经常遇到各种问题,今天简单梳理一下自己遇到的几个问题。
1630 0
sonar 使用常见问题总结
|
Dragonfly 算法 安全
RT-Thread快速入门-动态内存堆管理方法
RT-Thread快速入门-动态内存堆管理方法
334 0
|
网络协议 应用服务中间件 API
CentOS7.5 手动部署Ceph RGW
目    录 1     设备列表... 1 2     Ceph RGW 部署... 1 2.1     使用civetweb配置... 2 2.2     使用nginx配置... 5   本文主要记录一下手动部署rgw的过程,环境是使用的之前手动部署的ceph环境,之前的环境部署可以参考以下链接https://yq.aliyun.com/articles/604372   Ceph RGW(即RADOS Gateway)是Ceph对象存储网关服务,是基于LIBRADOS接口封装实现的FastCGI服务,对外提供存储和管理对象数据的Restful API。
8009 0
体育足球直播APP开发,2023最新赛事直播系统现成源码推荐
随着移动设备和体育产业的快速发展,移动体育赛事直播应用已经成为人们观赛的主要途径之一。然而,开发一款功能具备实时的比赛直播、竞猜、精彩视频、社区互动等功能的APP常常需要巨大的开发成本、时间和风险。
|
缓存 小程序 API
小程序:浅谈小程序更新机制,发版后多久能全覆盖
小程序:浅谈小程序更新机制,发版后多久能全覆盖
772 0
|
缓存 JavaScript 前端开发