位置: 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 转载请保留说明!

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

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

  • iqooz5x手机屏幕多大

    iqooz5x手机屏幕多大

  • 苹果手机微信接收的文件在哪里找(苹果手机微信接视频需要开锁)

    苹果手机微信接收的文件在哪里找(苹果手机微信接视频需要开锁)

  • qq怎么设置系统提示音(qq怎么设置系统声音)

    qq怎么设置系统提示音(qq怎么设置系统声音)

  • ipad2016是几代(2016款ipad是第几代)

    ipad2016是几代(2016款ipad是第几代)

  • 华为aqm-al10是什么型号(华为aqm-al10是华为什么型号)

    华为aqm-al10是什么型号(华为aqm-al10是华为什么型号)

  • 华为nova6智能遥控在哪里(华为手机智能遥控在哪nova6)

    华为nova6智能遥控在哪里(华为手机智能遥控在哪nova6)

  • 手机号注册id安全吗(手机号注册ID安全吗)

    手机号注册id安全吗(手机号注册ID安全吗)

  • nova7pro支持wifi6吗(nova7Pro支持无线充电吗)

    nova7pro支持wifi6吗(nova7Pro支持无线充电吗)

  • 荣耀30怎么设置24小时制(荣耀30怎么设置2个系统)

    荣耀30怎么设置24小时制(荣耀30怎么设置2个系统)

  • 京东返修要自己出运费吗(京东返修需要多久)

    京东返修要自己出运费吗(京东返修需要多久)

  • 局域网的网络软件主要包括什么(局域网的网络软件主要)

    局域网的网络软件主要包括什么(局域网的网络软件主要)

  • 笔记本开机键是哪个图标(笔记本开机键是长按吗)

    笔记本开机键是哪个图标(笔记本开机键是长按吗)

  • 电脑下划线符号怎么打(电脑下划线符号大全复制)

    电脑下划线符号怎么打(电脑下划线符号大全复制)

  • office苹果系统能用吗(苹果系统可以用office)

    office苹果系统能用吗(苹果系统可以用office)

  • 淘宝不确认收货卖家能拿到钱吗(淘宝不确认收货花呗什么时候入账)

    淘宝不确认收货卖家能拿到钱吗(淘宝不确认收货花呗什么时候入账)

  • word可以调整纸张大小吗(word如何调整纸张)

    word可以调整纸张大小吗(word如何调整纸张)

  • wps如何删除表格中的线(wps如何删除表格横线)

    wps如何删除表格中的线(wps如何删除表格横线)

  • ssl协议又称为什么(ssl协议的主要作用是什么)

    ssl协议又称为什么(ssl协议的主要作用是什么)

  • 淘宝达人怎么修改昵称(淘宝达人账号怎么弄)

    淘宝达人怎么修改昵称(淘宝达人账号怎么弄)

  • 腾讯视频怎么绑定手机(腾讯视频怎么绑定王卡)

    腾讯视频怎么绑定手机(腾讯视频怎么绑定王卡)

  • 文档部件域的含义(word2010文档部件域可以做什么)

    文档部件域的含义(word2010文档部件域可以做什么)

  • 抖音作者可以删除别人的评论吗(抖音作者可以删除粉丝评论吗)

    抖音作者可以删除别人的评论吗(抖音作者可以删除粉丝评论吗)

  • 小米9水滴形状设置(更新后的小米9水滴屏在哪里设置?)

    小米9水滴形状设置(更新后的小米9水滴屏在哪里设置?)

  • x5690相当于什么cpu(x5690cpu参数)

    x5690相当于什么cpu(x5690cpu参数)

  • 拉黑的电话号码打过去提示什么(拉黑的电话号码在哪里可以找到苹果手机)

    拉黑的电话号码打过去提示什么(拉黑的电话号码在哪里可以找到苹果手机)

  • p30防水么(p30防水到什么程度)

    p30防水么(p30防水到什么程度)

  • WPS幻灯片如何插入动作按钮(wps添加幻灯片)

    WPS幻灯片如何插入动作按钮(wps添加幻灯片)

  • Win11 新增快捷键一览:快速布局窗口,打开侧边栏(win11如何添加快捷方式)

    Win11 新增快捷键一览:快速布局窗口,打开侧边栏(win11如何添加快捷方式)

  • MySql -- 不存在则插入,存在则更新或忽略(mysql如果不存在就创建表)

    MySql -- 不存在则插入,存在则更新或忽略(mysql如果不存在就创建表)

  • Ubuntu18.04 安装Matlab2021b(ubuntu20.04安装make)

    Ubuntu18.04 安装Matlab2021b(ubuntu20.04安装make)

  • 印花税不足1元需要缴纳吗
  • 小微企业所得税优惠政策最新2022
  • 财务软件购买税点多少钱
  • 利息收入交所得税吗
  • 代理费住宿费都包括什么
  • 公司如何做成集团
  • 税务局的信用等级是多少
  • 什么叫残保金减免
  • 劳务派遣公司如果倒闭了怎么办
  • 火车票进项抵扣怎么勾选
  • 运输服务有3%的税率吗
  • 结转应收票据是什么意思
  • 外商投资企业如何注资
  • 利率与股价的计算方法
  • 企业违约补偿收条怎么写
  • 怎么红冲暂估成本
  • 金税盘发票号码确认显示不全
  • 企业车辆办理违章
  • 当地预缴2%什么时候缴纳
  • 销售依据
  • 核定征收未分配利润分红分录
  • 增值税税控系统技术维护费计入什么科目
  • 农行转账支票填写样本存根怎么填
  • 公司委托公司收款合法吗
  • 支付工程款时有哪些费用
  • 电子产品企业用电量大吗
  • 员工饭卡充值是哪个部门做
  • 个体工商户清算报告
  • 打开我的电脑出现找不到应用程序
  • 鸿蒙密码锁设置密码的方法
  • 王者荣耀花木兰打法教学
  • 小规模纳税人如何缴纳企业所得税
  • php中提交表单数据
  • 个人所得税查账征收管理办法
  • 合同违约金可以全额扣除吗
  • 外包员工的工资外包公司会扣吗
  • php实现图片上传
  • 一般纳税人销售自己使用过的汽车
  • 企业利润取出税费有哪些
  • php bool
  • 财政专户资金是专项资金吗
  • vue聊天系统
  • 金税盘锁死咋办
  • 开源代码网站github
  • 缴纳增值税会计科目
  • 税款已缴纳可以作废申报吗
  • 增值税发票认证结果通知书在哪里打印
  • 企业有代扣代缴个税义务
  • 主营业务成本和生产成本的关系
  • python抛出异常
  • 本期应补退税额就是交钱吗
  • 为客户购买的机票怎么入账
  • 血液制品增值税税率
  • 小规模纳税人可以开13的税吗
  • 短期借款的核算
  • 研发费用允许加计扣除的标准
  • 只有进项税额没有销项税额怎么结转
  • 个人所得税经营所得税申报表A表
  • 建账时都要建哪些科目
  • mysql类型varchar长度
  • windows ip地址在哪里设置
  • ubuntu16.04安装步骤
  • windows任务管理器怎么用
  • linux如何学
  • macbookpro如何点击
  • linux 怎么样
  • Unity3D游戏开发引擎
  • python模块和类和方法
  • opengl learn
  • android编译环境搭建
  • 备份系统三要素
  • bootstrap 按钮
  • unity3d物理现象模拟
  • javascript indexOf函数使用说明
  • jquery插件免费下载
  • 认识iu
  • 国家税务总局通知公告
  • 撤销存款证明需要什么手续
  • 会计建账时一般需要哪几本账
  • 南宁市税务局稽查局领导
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设