文章目录

  • 一、v-model
    • 1.最简写法
    • 2.可自定义属性名的写法(2.2.0+)
    • 3.多绑
  • 二、.sync

  • [自定义组件的 v-model — Vue.js 中文文档]:(https://vuejs.bootcss.com/guide/components-custom-events.html#自定义组件的-v-model)
  • [.sync 修饰符 — Vue.js 中文文档]:(https://vuejs.bootcss.com/guide/components-custom-events.html#sync修饰符)

一、v-model

v-model 一般是在表单控件使用,不过这里我们要用在自定义组件中,由于文档中的例子是封装表单控件,我刚见到这种用法时有些疑惑,只能用在表单控件吗?其实不然:

1.最简写法

子组件:

props: {value: {type: Array,default: () => []}
},
watch: {value() {this.$emit('input', this.value)}
},
methods: {handleClose() {this.$emit('input', this.value)}
}

父组件:

<custom-form v-model="data"></custom-form>

默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event。

2.可自定义属性名的写法(2.2.0+)

子组件:

model: {prop: 'formData',event: 'handleClose'
},
props: {formData: {type: Array,default: () => []}
},
watch: {formData: {handler: function() {this.$emit('handleClose', this.formData)}}
},
methods: {handleClose() {this.$emit('handleClose', this.formData)}
}

父组件:

<custom-form v-model="formData"></custom-form>

重点:

  • model.event的值必须与$emit第一个参数的值等
  • $emit既可以通过watch或钩子函数触发,也可以通过dom事件触发,无限制

3.多绑

vue3现在支持多绑,需要多个绑定的话可以这样用的:

子组件:

props: {formData: {type: Array,default: () => []},tableData: {type: Array,default: () => []}
},
watch: {formData() {this.$emit('update:formData', this.formData)this.$emit('update:tableData', this.tableData)}
},
methods: {handleClose() {this.$emit('update:formData', this.formData)this.$emit('update:tableData', this.tableData)}
}

父组件:

<custom-form v-model:formData="formData" v-model:tableData="tableData"></custom-form>

二、.sync

vue3之前,一个组件只能有一个v-model,因此还有其他需要双绑的,使用.sync::

子组件:

props: {formData: {type: Array,default: () => []}
},
watch: {formData() {this.$emit('update:formData', this.formData)}
},
methods: {handleClose() {this.$emit('update:formData', this.formData)}
}

父组件:

<custom-form :formData.sync="formData"></custom-form>

参考文章:

  • [在组件上使用 v-model_前端精髓]:(https://blog.csdn.net/wu_xianqiang/article/details/82115598)
  • [Vue 项目里戳中你痛点的问题及解决办法]:(https://juejin.cn/post/6844903632815521799)
  • [vue在自定义组件中使用v-model]:(https://www.imooc.com/article/details/id/294534)

【笔记】vue父子组件数据双向绑定(v-model、prop.aync)相关推荐

  1. vue自定义组件数据双向绑定,获取vue自定义组件input框输入的值

    1.首先创建一个自定义组件 Vue.component('test-component',{template:`<div id="el"><input @inpu ...

  2. vue 父子组件传值 双向绑定

    父组件: <template> //:content , @content 中的:@一个是v-bind 一个是v-on的写法. //:content="detail" ...

  3. vue中通过数据双向绑定给video标签的src赋值,只有第一次有效,怎么解决?

    场景:在一个视频列表页面,点击视频列表,则全屏播放视频.全屏播放是一个公用组件,每次点击视频列表则把该视频的播放地址通过vue的数据双向绑定到组件中的video标签,如下: <video con ...

  4. vue 自定义组件 v-model双向绑定、 父子组件同步通信

    父子组件通信,都是单项的,很多时候需要双向通信.方法如下: 1.父组件使用:msg.sync="aa"  子组件使用$emit('update:msg', 'msg改变后的值xxx ...

  5. vue自定义组件实现双向绑定

    场景: 我们比较常用的父子组件之间的交互方式: 父组件通过props将数据流入到子组件: 子组件通过$emit将更新后的数组发送的父组件: 今天,我们通过另一种方式实现交互,参考input框的v-mo ...

  6. Vue实现组件props双向绑定解决方案

    注意: 子组件不能直接修改prop过来的数据,会报错 方案一: 用data对象中创建一个props属性的副本 watch props属性 赋予data副本 来同步组件外对props的修改 watch ...

  7. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于"父子组件通信"的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰 ...

  8. 西安电话面试:谈谈Vue数据双向绑定原理,看看你的回答能打几分

    最近我参加了一次来自西安的电话面试(第二轮,技术面),是大厂还是小作坊我在这里按下不表,先来说说这次电面给我留下印象较深的几道面试题,这次先来谈谈Vue的数据双向绑定原理. 情景再现: 当我手机铃声响 ...

  9. 数据双向绑定_手把手教你用JavaScript如何实现数据双向绑定

    近几年前端技术栈真是发展的太迅速了,从以前的针对dom操作的框架如jquery,ext.js等框架逐步过渡到当前的mvvm模式,让前端开发者将注意力从dom操作逐渐解脱出来,专注于逻辑的实现,个人认为 ...

最新文章

  1. mysql mcd date_mysql升级5.5 - ifeixiang的个人页面 - OSCHINA - 中文开源技术交流社区
  2. 聊一下我们团队的理念
  3. android控制手机强制手机横竖方向,使用android IOIO和安卓手机制作视频遥控小车(控制灯的开关、实时视频传输、方向控制)...
  4. 英伟达显卡不同架构_英伟达新款笔记本显卡全阵容曝光:共计六款
  5. svn学习笔记(一)
  6. 6月份Asp.net源码推荐
  7. OSX上Docker快速上手-以部署node.js环境为例
  8. openstack在xiandian界面登录提示无效证书_注意:2019年医师资格证书开始发放啦!...
  9. Raphael学习笔记(4)--绘图(路径【贝塞尔曲线】)
  10. 8-4 如何使用线程本地数据
  11. 终极算法【6】——贝叶斯学派
  12. librdkafka的安装和使用
  13. vs2010中svn使用教程_vs2010+ Ankhsvn使用详解
  14. 12306UserScript
  15. Ubuntu16.04解决arpspoof时出现arpspoof: libnet_check_iface() ioctl: No such device问题
  16. Android花样Text设置神器之SpanableString
  17. 基于JAVA+SpringBoot+Mybatis+MYSQL的相册管理系统
  18. 微信小程序5——小程序网络数据请求
  19. Hutool XML 转JSON 后 parseArray踩坑
  20. windows下的BT服务器搭建方案

热门文章

  1. 经典算法:模拟退火(SA)算法
  2. 好看的动漫html页面,漂亮的页面过渡动画
  3. MHD- I88音视频安卓一体机
  4. matlab movie2avi函数,如何用movie2avi命令将这个爱心生成动画转化成avi
  5. SQL连接两张相同或不同的表,使用 UNION 和 UNION ALL 操作符
  6. 基于OMAP平台的声源定位系统设计与实现
  7. 导航网站哪个好,推荐一个好用的网址导航网站
  8. 阿里时间同步服务器地址
  9. Android封闭系统,最封闭的Android系统—魅族Flyme
  10. Java线程池参数、执行流程及线程数配置建议