【Vue】利用v-model特性封装Dialog弹窗或可编辑窗口。

news2025/7/3 21:37:27

简单介绍,Vue里面的v-model就是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。

v-model封装弹窗

父组件

<manage-dialog v-model="isVisible"/>
<div @click="isVisible=true"> 点我弹窗</div>

export default {
components: {manageDialog},data(){return{isVisible:false}
 }

} 

子组件

 <el-dialog:visible.sync="isVisible":before-close="handleClose" ><script> export default {model: {prop: 'isVisible',event: 'close'//这个要是close},props: {isVisible: {type: Boolean,default: false},},methods: {handleClose() {this.$emit('close', false)}}

} </script> 

小结:

这个比较简单,需要注意的是子组件里的model允许一个自定义组件在使用 v-model 时定制 propevent。官方文档里有写,一个组件上的 v-model 默认会利用名为 valueprop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。model 选项可以用来避免这样的冲突,所以上面的子组件里,我们用balabala来替换掉了原本的input事件,所以在$emit的时候,里面的事件名应为close,否则默认为input.

其实还有第二种方法,是需要使用.sync修饰符。子组件通过this.$emit(“update:show”,false);来操作的。这里就不过多介绍。

v-model封装可编辑表单

先看官网介绍=> 自定义事件可以用于开发支持 v-model 的自定义表单组件。回忆一下 v-model 在原生元素上的用法:

<input v-model="searchText" /> 

上面的代码其实等价于下面这段 (编译器会对 v-model 进行展开):

<input:value="searchText"@input="searchText = $event.target.value"
/> 

父组件

<template><home-child v-model="vModelData"></home-child>
</template>

<script> import HomeChild from './child/HomeChild.vue'
export default {name: 'Home',components: {HomeChild},data () {return {vModelData: 'hello v-model'}}
} </script> 

子组件

<template><div class="box"><span>{{ value }}</span><button @click="testVModel">测试v-model</button></div>
</template>

<script> export default {name: 'HomeChild',props: {value: {type: String,default: ''}},methods: {testVModel () {this.$emit('input', '我是子组件')}}
} </script> 

用 model 选项的 组件使用 v-model

父组件

<template><div class="home"><h3>输入的实时内容:{{ myValue }}</h3><custom-model v-model="myValue"></custom-model></div>
</template>
<script> import CustomModel from './CustomModel'
export default {name: 'Home',components: {CustomModel,},data () {return {myValue: ''}},
} </script>
复制代码 

子组件

<template><!-- 自定义组件中使用v-mode指令 --><input type="search" @input="changeInput" data-myValue="">
</template>

<script> export default {name: 'CustomModel',// 当我们使用model的默认值的时候value作prop,input作event时,可以省略不写model。model: {prop: 'myValue', // 默认是valueevent: 'myInput', // 默认是input},props: {// 接收string和number类型的值,// 注意不能是写成字符串["String","Number"],因为此时它们是构造器,是全局变量myValue: [String, Number],},methods: {changeInput ($event) {// 向上派发myInput事件,这样model监听myInput才有意义:当输入字符时触发input事件,// 进而派发触发自定义的myInput事件,然后model监听myInput,就实现了数据绑定this.$emit('myInput', $event.target.value)},}
} </script> 

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8年测试工程师,3年功能,5年自动化,浅谈我的自动化测试进阶之路...

前言 大家好我是小濠&#xff0c;本命马玉濠&#xff0c;已近从事测试行业8年了&#xff0c;自己也从事过3年的手工测试&#xff0c;从事期间越来越觉得如果一直在手工测试的道路上前进&#xff0c;并不会有很大的发展&#xff0c;所以通过自己的努力&#xff0c;早几年已经成…

2022巨量引擎城市峰会:发布重磅白皮书 提升城市繁荣力

12月21日&#xff0c;由巨量引擎城市研究院发起的年度城市盛典——《数说美好城市2022巨量引擎城市主题峰会》在上海隆重启幕。作为巨量引擎旗下专业城市研究机构&#xff0c;巨量引擎城市研究院在峰会期间发布了两份重磅报告:《2022美好城市指数白皮书》以及《2022都市圈发展力…

【Numpy基础知识】通用函数ufunc基础知识

通用函数(ufunc)基础知识 来源&#xff1a;Numpy官网&#xff1a;<https://numpy.org/doc/stable/user/basics.html 文章目录通用函数(ufunc)基础知识导包【1】Ufunc方法【2】输出类型确定【3】广播【4】类型转换规则【5】使用内部缓冲器【6】错误处理【7】覆盖ufunc行为导包…

【布局 widget】OverflowBox 与 SizedOverflowBox

OverflowBox 对于 OverflowBox ,文档只有一句话&#xff1a;把不同的约束强加给 child&#xff0c;允许 child overflow 父容器。这句话说的太简略了&#xff0c;使用的时候还是一头雾水&#xff0c;代码逻辑是这样的: BoxConstraints _getInnerConstraints(BoxConstraints co…

文科专业女生转行程序员月入20k:女生不适合做程序员吗?

背景故事 我毕业于某不知名985的经济学院&#xff0c; 19年毕业就跨考了计算机&#xff0c; 第一年考的是北大。北大专业课自主命题&#xff0c;考试范围包括慕课上的四门课408四门内容&#xff0c; 我就去做了炮灰。 第二年因为疫情和一些别的事情&#xff0c; 9月份开始准备考…

用 Python 制作各种用途的二维码

当你提到二维码时&#xff0c;大多数人想到的是仓库管理或产品标签等 "工业 "应用&#xff0c;但这篇文章在很大程度上是关于二维码的个人和社会用途。 有趣的事实 二维&#xff08;QR&#xff09;码是在1994年发明的&#xff0c;最近几年由于新冠肺炎的出现&#…

一道非常棘手的 Java 面试题:i++ 是线程安全的吗?

i 是线程安全的吗&#xff1f; 相信很多中高级的 Java 面试者都遇到过这个问题&#xff0c;很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑&#xff0c;i 居然还有线程安全问题&#xff1f;只能说自己了解得不够多&#xff0c;自己的水平有限。 先来看下面的示例来…

cache 缓存

缓存原理 测试样例 验证码 获取验证码 验证 验证码是否正确 idea 启动缓存 手机验证码 idea 手机 获得验证码 ehchace 数据淘汰策略 使用redis 然后启动 redis 服务器 redis-server.exe redis.windows.conf 启动redis 客户端redis-cli.exe time-to-live 最大活动时间 缓…

jsp+ssm计算机毕业设计职业中介信息管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

【蓝牙依赖】微信小程序 + uni通用,自用蓝牙依赖文件总结

引言 今年相较去年相比&#xff0c;做的比较多的是&#xff0c;蓝牙方面的对接工作。 因此&#xff0c;我整理了大半年来&#xff0c;对接蓝牙的经验&#xff0c;编写了蓝牙依赖文件。 这样可以有效的提升我的开发效率&#xff0c;以及合理增加我快乐的摸鱼时间 ~ 正文 废话…

ubuntu 安装supervisord

ubuntu 系统安装命令如下 sudo apt update && sudo apt install supervisor Supervisor服务在安装后自动运行&#xff08;这点从安装后创建的symlink到systemd的自启动服务可以看出&#xff09;。检查其状态&#xff1a; sudo systemctl status supervisor 如下安装…

基于SPRINGBOOT的高校羽毛球馆信息管理系统的设计与实现

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;基于springboot的高校羽毛球馆信息管理系统的设计与实现 模块划分&#xff1a;通知类型、通知信息、用户信息、用户充值、…

成功转行Python工程师,年薪30W+,经验总结都在这!

这是给转行做Python的小白的参考&#xff0c;无论是从零开始&#xff0c;或者是转行的朋友来说&#xff0c;这都是值得一看的&#xff0c;也是可以作为一种借鉴。 而且我决定转行IT&#xff08;互联网&#xff09;行业&#xff08;已转好几年&#xff09;&#xff0c;其实理由…

基于Java+Swing+mysql游泳馆会员管理系统

基于JavaSwingmysql游泳馆会员管理系统一、系统介绍二、功能展示1.管理员登陆2.主页面3.添加会员卡4.存款管理5.消费管理6.会员资料查询7.会员资料修改7.会员卡禁用、挂失三、系统实现1.StudentFrame .java四、其它1.其他系统实现一、系统介绍 该系统实现了管理员系统登陆、售…

四大领先优势加持,华为云会议服务更省心可靠!

&emsp;&emsp;随着数字化转型的加速&#xff0c;随时随地视频沟通和数据协作的工作方式加速走进各行各业&#xff0c;并衍生出丰富的行业应用场景。云会议融入到了行业的增值和业务创新中&#xff0c;如在线办公&#xff0c;在线教育&#xff0c;远程会诊&#xff0c;金…

T-SQL程序练习01

目录 一、编写T-SQL程序&#xff0c;计算 1 2 − 3 4 − 5 … − 99 100 ? 二、写一个求三个数最大值的函数&#xff0c;输入为三个整数&#xff0c;输出为其中的最大值。 三、写一个T-SQL函数 &#x1d453;&#x1d44e;&#x1d461;&#xff0c;利用标准体重计算公式…

华为云桌面,数字化时代便捷、安全的办公选择

在当今效率优先、信息技术高度发展的时代&#xff0c;云桌面作为一种帮助企业实现快速办公上云的云服务&#xff0c;将应用于企业日常办公中&#xff0c;它不仅能够提升工作效率&#xff0c;而且还具有良好的扩展性和可扩展性&#xff0c;因此备受业界关注。 其中&#xff0c;华…

太难了!自学编程转行经历分享

本人坐标武汉&#xff0c;双非机电专业背景出身&#xff0c;求职目标互联网行业。 其实机电专业在整个机械大类里算是好就业一点的了&#xff0c;毕竟会涉及到单片机和PLC&#xff0c;随着物联网以及智能制造的发展&#xff0c;前景比传统的机械专业还是要好很多。&#xff08…

PGP邮件加密软件的使用

一、实验目的及要求 1.熟悉公开密钥密码体制&#xff0c;了解证书的基本原理&#xff0c;熟悉数字签名&#xff1b; 2.熟练使用PGP的基本操作&#xff0c;能对邮件或传输文档进行加密&#xff1b; 二、实验内容 1.创建一私钥和公钥对 使用PGPtray之前&#xff0c;需要用PGPkey…

【架构师(第五十二篇)】 几个前端工具的基本使用

前端截图 html2canvas 基本用法 import html2canvas from html2canvas const screenshot () > {// 获取需要截图的 dom 节点const el document.getElementById(target-id)// 第一个参数是节点,第二个参数是一些配置// 默认是不对跨域资源做处理, 需要添加额外的配置 use…