位置: 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能用4G卡吗(苹果13用4g卡会不会影响网速)

    苹果13能用4G卡吗(苹果13用4g卡会不会影响网速)

  • 微信可以删除朋友圈的评论吗(微信可以删除朋友圈其中一张照片吗)

    微信可以删除朋友圈的评论吗(微信可以删除朋友圈其中一张照片吗)

  • 苹果验证码空白(苹果验证码不在中间)

    苹果验证码空白(苹果验证码不在中间)

  • 文件传输助手是否安全(文件传输助手是干什么用的)

    文件传输助手是否安全(文件传输助手是干什么用的)

  • 京东货到付款验货规则(京东货到付款收款确认)

    京东货到付款验货规则(京东货到付款收款确认)

  • ios基于什么内核开发(ios是基于什么内核)

    ios基于什么内核开发(ios是基于什么内核)

  • 红米k30pro屏幕刷新率多少hz(红米k30pro屏幕刷新率90hz)

    红米k30pro屏幕刷新率多少hz(红米k30pro屏幕刷新率90hz)

  • 小米电脑鼠标箭头不见了(小米电脑鼠标箭头不动是什么原因)

    小米电脑鼠标箭头不见了(小米电脑鼠标箭头不动是什么原因)

  • 抖音吞画质怎么办(抖音里画质)

    抖音吞画质怎么办(抖音里画质)

  • 抖音火山版火苗怎么提现(抖音火山版火苗有什么用)

    抖音火山版火苗怎么提现(抖音火山版火苗有什么用)

  • 华为荣耀20Pro手机字体如何恢复默认(华为荣耀20pro手机重量)

    华为荣耀20Pro手机字体如何恢复默认(华为荣耀20pro手机重量)

  • 陌陌为啥老显示一分钟前在线(陌陌为啥老显示两天前在线)

    陌陌为啥老显示一分钟前在线(陌陌为啥老显示两天前在线)

  • 小米10通话没声音(小米10通话听不见)

    小米10通话没声音(小米10通话听不见)

  • 小米10pro电信卡不能打电话(小米10pro电信卡无网络)

    小米10pro电信卡不能打电话(小米10pro电信卡无网络)

  • iphonese和iphone11对比(iphonese和iphone11pro对比)

    iphonese和iphone11对比(iphonese和iphone11pro对比)

  • 手机很久没用了开不了机怎么办(手机很久没用了还能用吗)

    手机很久没用了开不了机怎么办(手机很久没用了还能用吗)

  • 快手直播怎么上同城热门(快手直播怎么上下架商品)

    快手直播怎么上同城热门(快手直播怎么上下架商品)

  • 怎样使用快捷菜单复制文本(怎样使用快捷菜单键)

    怎样使用快捷菜单复制文本(怎样使用快捷菜单键)

  • 电脑电源线颜色分别代表什么(电脑电源线颜色详解)

    电脑电源线颜色分别代表什么(电脑电源线颜色详解)

  • obb文件要怎么打开(obobj文件怎么打开)

    obb文件要怎么打开(obobj文件怎么打开)

  • 抖音如何上传4分钟长视频(抖音如何上传4k60帧视频)

    抖音如何上传4分钟长视频(抖音如何上传4k60帧视频)

  • wps字体如何无限加粗(wps字体如何无限放大)

    wps字体如何无限加粗(wps字体如何无限放大)

  • cmcc是什么路由器(wifi名字cmcc是什么路由器)

    cmcc是什么路由器(wifi名字cmcc是什么路由器)

  • 小米手机安装包在哪里(小米手机安装包白名单在哪里)

    小米手机安装包在哪里(小米手机安装包白名单在哪里)

  • 抖音怎么取消收藏(抖音怎么取消收藏的视频作品)

    抖音怎么取消收藏(抖音怎么取消收藏的视频作品)

  • 苹果官网取消订单微信退款大致所需时间(苹果官网取消订单为啥不退款)

    苹果官网取消订单微信退款大致所需时间(苹果官网取消订单为啥不退款)

  • 土地出让金印花税计税依据
  • 什么是进项税额转出
  • 什么原始凭证可以填写
  • 主营业务成本借方表示什么意思
  • 收据盖发票专用章后果
  • 国际货运代理企业应当遵循哪些原则
  • 生产车间职工工资
  • 法人把自己的车租给公司交什么税
  • 客户逾期付款
  • 工程预付款需要什么资料
  • 销售货物未开发怎么处理
  • 应付账款的核算会计分录
  • 销售免税药品要进项税额转出吗
  • 材料成本差异结转借贷方向
  • 增值税税率调整时间17变16
  • 委托加工农产品的扣除率
  • 存出保证金的账务处理
  • 机械设备租赁征求意见稿
  • 出售商标使用权收入计入什么科目
  • 股份支付的成本费用怎样才能在税前扣除?
  • 会计明细账簿包括哪些
  • 开专票需要备注吗
  • 没有单价数量只有金额的发票可以用吗
  • 税控盘不存在怎么回事
  • 安装调试费计入什么科目
  • 外包食堂需要什么资质
  • 六税两费包括哪三税
  • 科目余额表借贷方余额不一致
  • 以前年度损益调整借贷方向
  • 解决的英文
  • 贴现利息会计处理
  • 开出服务费的增值税发票
  • 工会经费申报的依据
  • 如何给电脑文件加密并设置密码
  • 电脑xmp是啥
  • php字符串型数据的定义方式
  • windows商店如何切换地区
  • html5微博
  • 企业所得税退税流程
  • ps快速选择工具抠图后怎么拉出来
  • series转换为dataframe
  • 对企业采取以旧换新方式销售的应税产品
  • markdown小小白常用语法
  • 存根联是自己留着吗
  • 计提税费可以记入成本吗
  • 社保工伤保险可以退吗
  • 红字更正法适用于更正什么样的错误
  • sql server数据库恢复
  • 金税盘维护费应该计入什么科目
  • 结算备付金账户是什么帐户
  • 让渡资产使用权什么意思
  • 收回应收账款账面余额
  • 计提印花税会计科目
  • 会计调账情况模板
  • mysql官方监控工具
  • windows2000serve
  • mac如何用u盘安装win10
  • DWHeartbeatMonitor.exe进程是什么意思 DWHeartbeatMonitor是安全的进程吗
  • linux系统中常用的五种文件类型
  • centos7修复安装
  • ghost后恢复数据
  • linux内核的作用
  • java iterate()用法
  • 删除rpm安装包
  • Node.js中的全局对象有
  • jquery滚动条滚动到指定位置
  • shell生成excel文件
  • javascript包括在html中
  • android开发中默认的数据库
  • python数据操作
  • jquery的实现原理
  • python基础教程chm
  • js会话
  • 非常棒的jQuery图片轮播效果
  • #androidsdk文件夹可以删除吗
  • js设计模型
  • python的入门教程
  • java dom解析
  • 出口退的增值税怎么算
  • 商贸有限公司怎么运营
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设