位置: IT常识 - 正文

v-model的双向数据绑定实现原理(附:案例和项目实例)(v-model的双向绑定原理)

编辑:rootadmin
v-model的双向数据绑定实现原理(附:案例和项目实例) 一. 前言。

推荐整理分享v-model的双向数据绑定实现原理(附:案例和项目实例)(v-model的双向绑定原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:v-model双向绑定失效,双向lstm,v-model的双向数据绑定原理,双向lstm,v-model双向数据绑定,v-model双向数据绑定,v-model的双向数据绑定原理,双向lstm,内容如对您有帮助,希望把文章链接给更多的朋友!

相信对使用vue框架的童靴来说,v-model的使用都能信手沾来,熟悉的不能再熟悉,也都知道v-model其实是个语法糖。不过其究竟是怎么实现的双向数据绑定,很大一部分童靴还是心存疑虑。本文就根据最简单的案例和基于实际项目中最常用的实例来从两个角度讲解v-model的前世今生。

二. v-model的前世今生。

目前的几大主流MVC(VM)框架都实现了单向数据绑定。简而言之,vue中的v-model无非就是在单向数据绑定的基础上给对应表单元素(input、select等)添加了(input、change)事件,来动态修改model和view,从而达到双向数据绑定的效果。

三. v-model的实现。类型一:v-model的双向数据绑定实现原理(附:案例和项目实例)(v-model的双向绑定原理)

原生input元素的类型是text/textarea,那么是使用它的value属性和input事件来实现双向数据绑定。

类型二:

原生input元素的类型是radio/checkbox,那么是使用它的checked属性和change事件来实现双向数据绑定。

类型三:

原生select元素,是使用它的value属性和change事件来实现双向数据绑定。

四. v-model的实现案例。

本文就基于input输入框的text类型(上文中的类型一)为基准,来实现双向数据绑定的结果,并和v-mode的效果对比。

核心代码:<input type="text" :value="msg" @input="msg = $event.target.value"/>主要代码:<template> <div class="home"> <div class="box"> v-model的文本框内容:<input type="text" v-model="msg"> <p class="mscbox">v-model的展示内容:{{msg}}</p> </div> <br /> <div class="box2"> 原生文本框的内容:<input type="text" :value="msg2" @input="changeVal"> <p class="mscbox">原生的展示内容:{{msg2}}</p> </div> </div></template><script>export default { name: "Home", components: { }, data(){ return { msg: "v-model的测试内容", msg2: "原生的测试内容", } }, methods: { changeVal(e){ this.msg2 = e.target.value } }};</script><style>.mscbox{ color: red;}</style>效果图:

 五.  根据v-model双向数据绑定实现父子组件的项目实例。实现功能描述:通过父组件的按钮的clink事件和子组件弹窗的关闭事件,实现父子组件弹窗的显示、隐藏无缝交互。主体核心思想:父组件中给子组件标签设置v-model并绑定用于控制子组件显隐的变量。核心代码:父组件:<!--这里使用v-model,相当于是:value="son_obj.show", @input="son_obj.show = $event.target.value"--> <son v-model="son_obj.show"></son>子组件:props: { value:{ type: Boolean, default: false } }, data(){ return { isShow: false, } }, watch:{ value(bool){ this.isShow = bool; } }, methods: { handleClose(){ this.$emit('input',false) } }全部代码:父组件:<template> <div class="parent"> <el-button type="primary" @click="openSon">开启弹窗</el-button> <!--这里使用v-model,相当于是:value="son_obj.show", @input="son_obj.show = $event.target.value"--> <son v-model="son_obj.show"></son> </div></template><script>export default { name: 'parent', components: { son: (resolve) => require(["../components/son.vue"], resolve), }, data(){ return { son_obj: { show: false } } }, methods: { openSon(){ this.son_obj.show = true } }}</script>子组件:<template> <div class="son"> <el-dialog title="提示" :visible.sync="isShow" width="30%" :before-close="handleClose"> <span>这是一段信息</span> <span slot="footer" class="dialog-footer"> <el-button @click="handleClose">取 消</el-button> <el-button type="primary" @click="handleClose">确 定</el-button> </span> </el-dialog> </div></template><script>export default { name: 'son', props: { value:{ type: Boolean, default: false } }, data(){ return { isShow: false, } }, watch:{ value(bool){ this.isShow = bool; } }, methods: { handleClose(){ this.$emit('input',false) } }}</script>效果图:

六. 结语。

以上就是本文的全部内容,通过基础的input案例和父子组件交互案例来诠释了v-model的双向数据绑定实现原理。简而有序,相信能给读者带来清晰明了的知识理解。码字不易,还请各路神仙多多指教。

本文链接地址:https://www.jiuchutong.com/zhishi/295384.html 转载请保留说明!

上一篇:操作系统——死锁(操作系统())

下一篇:面试官问出这几道算法题,你能扛住么?(面试官问几个问题)

  • 维修费税率是13的话归口什么类别
  • 公司的股东就是公司的发起人
  • 会计分录的含义及三要素
  • 图书计入什么费用
  • 印花税缴款怎么用银行卡支付
  • 个人所得税纳税义务人
  • 申报后发现成本算错了
  • 流动负债和长期负债的比例多少合适
  • 出租房屋确认收入列简易计税还是销项税
  • 企业进行业务预算的编制技巧
  • 房屋出租收入其税收如何计算呢?
  • 股息和资本利得的区别
  • 技术转让费怎么定价
  • 预付货款核销如何做会计摘要呢?
  • 建筑施工企业工伤保险费率
  • 政府补助的失业金发放准时吗
  • 工程基建期的工作总结
  • 重庆国税发票查询真伪查询系统
  • 公司三季度亏损20个亿这股票值得买吗
  • 请问给员工报销怎么报
  • 月末主营业务收入结转会计分录
  • 银行不肯给电子承兑贴现怎么回事
  • 外贸企业出口收入怎么账务处理
  • 营改增挂靠工程项目账务处理
  • 简易计税进项税额转出公式
  • 已认证发票退货怎么办
  • 办公室装修合同印花税怎么缴纳?
  • 企业计算缴纳的所得税费用
  • 制造业购买纸箱子记入什么科目
  • 去年进项税没有抵扣了
  • linux 操作系统查看
  • 鸿蒙的usb调试
  • 事业单位付银行贷款利息
  • 怎么检查windows版本
  • 票据质押出票如何操作
  • 补缴增值税的会计处理
  • 农业合作社零申报流程
  • 新成立的公司要年报吗?
  • 股份支付如何缴纳个人所得税?
  • 交易性金融资产的入账价值怎么算
  • html基础总结
  • 电费打发票用哪个软件
  • php正则函数内容匹配
  • mmdetection ValueError: need at least one array to concatenate解决方案
  • 低值易耗品摊销表格
  • anconda虚拟环境路径
  • 3d点云处理算法
  • 简述资产负债表债务法
  • 借款利息记入短期借款吗
  • 伪静态html
  • 远期汇票分为哪几种
  • 一般纳税人公司出售旧车怎么开票
  • 企业交房租没有发票能充费用吗
  • 代扣代缴个人所得税手续费返还 增值税
  • 小型微利企业季度所得税怎么计算
  • 销售提成如何入账
  • 营改增后出售土地如何缴纳增值税
  • 合同法有什么规定
  • 房地产企业暂估成本所得税汇算
  • 小规模纳税人公转私技巧
  • 预付账款余额在贷方为
  • 厂房的使用寿命
  • 小规模纳税人做账分录全套流程最新
  • 佣金开什么发票内容?
  • 银行对账单怎么打印
  • ubuntu系统升级命令
  • centos的优缺点
  • 怎么找回手机删除的照片和视频
  • billmoney是什么意思
  • 虚拟机ubuntu怎么用
  • win7 word
  • app的架构设计
  • angular动态生成表单
  • 安卓打造世界中文全dlc
  • python简单实现刷新智联简历
  • javascript 对象
  • 地税局纪检组长黄斌简历
  • 江苏税务电子税务局电话号码
  • 医院能开增值税开发票吗
  • 机构改革结束了吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设