当前位置: 首页 > news >正文

vue2组件封装和UI组件的二次封装,方法,属性,ref的传递

封装组件使用v-model 

使用方法props接受value值,当值发生变化的时候再通过this.$emit("input", newValue),则实现了简单组件的v-model封装,如果不使用第三方UI可以接受到的值使用watch或者计算属性保存,然后再通过事件派发自己保存的值

$attrs可以透传组件上的属性,如果使用 props接收了某个属性,则从$attrs移除这个属性

代码:如elInput组件

 保存值写法可使用计算属性也可以使用监听器

<template><div class="switchWrap"><el-inputref="refInput"v-bind="$attrs":value="internalValue"@input="updateValue"></el-input></div>
</template><script>
export default {props: {value: [Boolean, String, Number],},data() {return {};},computed: {internalValue() {return this.value;},},methods: {updateValue(newValue) {this.$emit("input", newValue); // 触发内部 input 事件 让父组件可以v-model绑定},},mounted() {},
};</script>

 不保存值可直接派发值

<template><div class="switchWrap"><el-inputref="refInput"v-bind="$attrs":value="value"@input="updateValue"></el-input></div>
</template><script>
export default {props: {value: [Boolean, String, Number],},data() {return {};},computed: {},methods: {updateValue(newValue) {this.$emit("input", newValue); // 触发内部 input 事件 让父组件可以v-model绑定},},mounted() {},
};</script>

 使用方法

 <elInput v-model="value"></elInput >

 UI组件封装方法

 $attrs和$slots可以透传属性和插槽 然后通过解构插槽——>#[插槽名]=value 就可以获取传递的值,再通过遍历组件原型上的方法,然后把原型上的方法放在组件上,就可以使用ref透传

使用计算属性 slotsKeys 和 scopedSlotsKeys

 是为了动态获取父组件传递的具名插槽($slots)和作用域插槽($scopedSlots),

  并根据需要排除掉某些已使用的插槽,以便在渲染时可以有选择地展示插槽内容。

<template><div class="switchWrap"><el-inputref="refInput"v-bind="$attrs":value="value"@input="updateValue"><template v-for="slotName in scopedSlots" #[slotName]="scoped"><slot :name="slotName" v-bind="scoped"></slot></template><template v-for="slotName of namedSlot" v-slot:[slotName]><slot :name="slotName"></slot></template></el-input></div>
</template><script>
export default {props: {value: [Boolean, String, Number],},data() {return {usedSlots: [], // 已使用的插槽};},computed: {// 使用计算属性 namedSlot 和 scopedSlots//  是为了动态获取父组件传递的具名插槽($slots)和作用域插槽($scopedSlots),//  并根据需要排除掉某些已使用的插槽,以便在渲染时可以有选择地展示插槽内容。namedSlot() {return Object.keys(this.$slots).filter((key) => !this.usedSlots?.includes(key));},scopedSlots() {return Object.keys(this.$scopedSlots).filter((key) => !this.usedSlots?.includes(key));},},methods: {updateValue(newValue) {this.$emit("input", newValue); // 触发内部 input 事件 让父组件可以v-model绑定},},mounted() {for (let key in this.$refs.refInput) {if (typeof this.$refs.refInput[key] == "function") {this[key] = this.$refs.refInput[key];}}},
};
</script>

 使用方法

       <inputUi v-model="inputValue" @input="getInfo" ref="refInput"><template #prepend>Http://</template></inputUi>

相关文章:

vue2组件封装和UI组件的二次封装,方法,属性,ref的传递

封装组件使用v-model 使用方法props接受value值&#xff0c;当值发生变化的时候再通过this.$emit("input", newValue)&#xff0c;则实现了简单组件的v-model封装,如果不使用第三方UI可以接受到的值使用watch或者计算属性保存&#xff0c;然后再通过事件派发自己保存…...

喜报!景联文科技成功通过DCMM数据管理能力成熟度二级认证

10月30日&#xff0c;中国电子信息行业联合会公示了新一批DCMM贯标企业&#xff0c;景联文科技成功通过DCMM数据管理能力成熟度二级认证&#xff08;乙方认证&#xff09;。 DCMM是《数据管理能力成熟度评估模型》的简称&#xff0c;是我国在数据管理领域首个正式发布的国家标准…...

从壹开始解读Yolov11【源码研读系列】——Data.dataset.py:模型训练数据预处理/YOLO官方数据集类——YOLODataset

【前情回顾】在上一篇文章记录了YOLO源码data目录下的 base.py 文件&#xff0c;其中定义了一个可灵活修改的数据加载处理基类——Class BaseDataset 灵活基类博文地址&#xff1a;https://blog.csdn.net/qq_58718853/article/details/143249295 【实验代码】所有实验代码上传至…...

C语言初阶必会的练习题(3)之位操作符(^ 、、>>等)的应用

C语言初阶必会的练习题&#xff08;3&#xff09; 放在最前面的1、不允许创建临时变量&#xff0c;交换两个整数的内容1.1、分析&#xff1a;见代码注释&#xff08;a&#xff09;方法 1&#xff08;b&#xff09;方法 2 1.2、结果展示方法 1 的 结果&#xff1a;方法 2 的 结果…...

MongoDB面试专题33道解析

大家好&#xff0c;我是 V 哥。今天给大家分享 MongoDB的道 V 哥原创的面试题&#xff0c;收藏起来&#xff0c;一定会对你有帮助。 V 哥推荐&#xff1a;2024 最适合入门的 JAVA 课程 1. 你说的 NoSQL 数据库是什么意思&#xff1f;NoSQL 与 RDBMS 直接有什么区别&#xff1f…...

Laravel 安全实践:如何防止 XSS 攻击

在当今的网络环境中&#xff0c;应用程序的安全性越来越受到开发者和企业的重视。跨站脚本攻击&#xff08;XSS&#xff09;是常见的网络安全威胁之一&#xff0c;它通过在目标网站上注入恶意脚本&#xff0c;窃取用户信息或执行恶意操作。作为流行的 PHP 框架&#xff0c;Lara…...

《Java Web 开发》

一、引言 在当今数字化时代&#xff0c;Web 应用程序已经成为人们生活和工作中不可或缺的一部分。Java Web 开发作为一种广泛应用的技术&#xff0c;以其强大的功能、稳定性和可扩展性&#xff0c;在企业级应用开发中占据着重要地位。本文将深入探讨 Java Web 开发的各个方面&a…...

Vector和ArrayList

Vector和ArrayList都是Java集合框架中的动态数组实现类&#xff0c;它们之间存在一些显著的区别。以下是对Vector和ArrayList的详细比较&#xff1a; 一、线程安全性 Vector&#xff1a;是线程安全的&#xff0c;即多线程情况下&#xff0c;Vector可以保证容器的同步性。Vect…...

关于我、重生到500年前凭借C语言改变世界科技vlog.16——万字详解指针概念及技巧

文章目录 1. sizeof 和 strlen1.1 sizeof1.2 strlen 2. 数组和指针结合的试题深入解析2.1 一维数组2.2 字符数组代码1代码2代码3代码4代码5代码6 2.3 二维数组 3.指针运算的试题深入解析题1题2题3题4题5题6题7 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力…...

开发更便利!迅为RK3568/RK3588 定制分区镜像发布

目前迅为所维护的Linux SDK一直延续RK官方默认分区结构&#xff0c;而迅为另维护了的一套定制分区结构的SDK&#xff0c;两种不同的分区结构都有着各自的特性&#xff0c;RK默认分区镜像和定制分区镜像对比如下所示&#xff1a; rk传统分区适合启动速度要求高且硬件配置固定的系…...

基于Springboot的学生宿舍管理系统的设计与实现-计算机毕设 附源码 26991

基于Springboot的学生宿舍管理系统的设计与实现 摘 要 学生宿舍管理系统在高校管理中具有重要的作用&#xff0c;为提高宿舍管理效率和服务质量&#xff0c;本文基于Springboot框架开发了一款学生宿舍管理系统。该系统主要分为管理员、学生用户和宿管用户三类角色&#xff0c;每…...

Spring Mvc中拦截器Interceptor详解

一、概述 拦截器常用于在请求处理的不同阶段插入自定义逻辑。Spring MVC的拦截器作用是在请求到达控制器之前或之后进行拦截&#xff0c;可以对请求和响应进行一些特定的处理。如&#xff1a; 登录验证&#xff1a;对于需要登录才能访问的网址&#xff0c;使用拦截器可以判断…...

【go从零单排】Strings and Runes 字符串和字符

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 概念 在Go语言中&#xff0c;rune 是一个内置的数据类型&#xff0c;用于表示一个Unicode字符。它实际上是一个别名…...

django Forbidden (403)错误解决方法

存在问题&#xff1a; django提交请求时&#xff0c;报403错误&#xff1b; 解决方案&#xff1a; 在form表单中加{% csrf_token %} <h1>用户登录</h1><form me method"post" ac action"/login/">{% csrf_token %}<input type"t…...

pdmaner连接sqlexpress

别以为sqlserver默认的端口总是1433 案例 有台sqlserver2008 express服务器&#xff0c;刚安装&#xff0c;支持混合模式登录&#xff0c;其它什么配置也没改。 先看用ADO连接 这说明&#xff1a; 案例中sqlserver端口不是1433 &#xff01;&#xff01;&#xff01;ADO连接…...

如果编译不通过,且感觉代码没有问题,大概率就是中文引起的问题

一、如果中文乱码&#xff1a;彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_qt 中文乱码-CSDN博客 二、如果中文正常&#xff0c;编译还是有莫名其妙的问题 1、设置编码为 UTF-8(带BOM)。&#xff08;如果下方没有出现“高级保存选项”&#xff0c;只需要修改一下代码&…...

java反序列化学习之CommonCollections3利用链的学习

一、前言 在前文中&#xff0c;我们学习了Java的类加载过程&#xff0c;类加载器以及Java中加载字节码的一些方法&#xff0c;其中介绍了TemplatesImpl&#xff0c;TemplatesImpl是一个可以加载字节码的类&#xff0c;通过调用其newTransformer()方法&#xff0c;即可执行这段字…...

超详细:Vue入门

Vue(发音为 /vjuː/&#xff0c;类似 view)是近些年比较流行的前端框架之一&#xff0c;和 React、Angular 并称为前端三大框架。其中 Vue 简单易学的特点成为国内主流&#xff0c;很多公司已经把它列为一 个前端开发人员必须要掌握的技术点了。 Vue 简介 Vue2.x官网 Vue3.x …...

基础网络安全知识

1.ctfhub技能树 1.1 Web-SQL注入 Web-SQL注入-整数型 && 字符型 && MySQL结构 参考&#xff1a;5.9.6MySql注入 Web-SQL注入-报错注入 step1: 查库名 ?id1 and extractvalue(1,concat(0x7e,database(),0x7e))-- step2: 查看表名 ?id1 and extractvalue(1…...

大语言模型工作原理笔记

大语言模型工作原理笔记 一、词向量&#xff1a;表示语言的方式 大语言模型使用词向量来表示单词&#xff0c;每个词向量是由一串数字组成的列表&#xff0c;代表词空间中的一个点。词空间中&#xff0c;含义相近的词位置更接近&#xff0c;例如"猫"的词向量会靠近…...

抖音内容下载技术方案:多策略架构与智能下载引擎实现

抖音内容下载技术方案&#xff1a;多策略架构与智能下载引擎实现 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

3分钟破解百度网盘提取码难题:智能解析工具完全指南

3分钟破解百度网盘提取码难题&#xff1a;智能解析工具完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘加密资源的提取码而烦恼吗&#xff1f;每次点击分享链接却卡在"请输入提取码"的弹窗前…...

LeaguePrank终极指南:免费打造个性化英雄联盟界面体验

LeaguePrank终极指南&#xff1a;免费打造个性化英雄联盟界面体验 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 还在为英雄联盟千篇一律的客户端界面感到乏味吗&#xff1f;LeaguePrank这款免费开源工具让你轻松自定义游戏中…...

PyTorch 2.8镜像作品集:基于OpenCV+Torch的实时手势识别视频演示

PyTorch 2.8镜像作品集&#xff1a;基于OpenCVTorch的实时手势识别视频演示 1. 镜像环境与能力概览 PyTorch 2.8深度学习镜像是一个经过深度优化的专业级开发环境&#xff0c;专为现代AI应用设计。这个环境最吸引人的特点是它已经预装了所有必要的工具和库&#xff0c;让你可…...

从MATLAB到C++:手把手教你将鱼眼相机标定结果(Scaramuzza模型)部署到OpenCV项目

从MATLAB到C&#xff1a;手把手教你将鱼眼相机标定结果&#xff08;Scaramuzza模型&#xff09;部署到OpenCV项目 鱼眼相机因其超广视角在机器人导航、虚拟现实等领域应用广泛。但MATLAB标定结果如何无缝迁移到C工程环境&#xff1f;本文将彻底解决这个痛点&#xff0c;带您完成…...

esp-nimble-cpp:ESP32上轻量级BLE C++开发指南

1. 项目概述esp-nimble-cpp是专为 ESP32 平台设计的 C 封装库&#xff0c;其核心目标是为 Apache NimBLE BLE 协议栈提供面向对象、线程安全且资源高效的抽象层。该库并非简单封装&#xff0c;而是以工程实践为导向的深度重构&#xff1a;它在保持与 nkolban 经典cpp_utilsBLE …...

从零到一:手把手教你用CANoe和Python脚本实现UDS诊断自动化测试(附完整代码)

从零到一&#xff1a;手把手教你用CANoe和Python脚本实现UDS诊断自动化测试&#xff08;附完整代码&#xff09; 在汽车电子测试领域&#xff0c;UDS&#xff08;Unified Diagnostic Services&#xff09;诊断协议的自动化测试已经成为提升开发效率的关键环节。传统的手动测试方…...

极验点选验证码识别避坑指南:如何应对验证码图片更新带来的挑战

极验点选验证码动态对抗实战&#xff1a;从数据迭代到模型优化的全链路解决方案 当你的验证码识别模型突然失效时&#xff0c;第一反应是什么&#xff1f;上个月刚跑通的极验点选验证码识别系统&#xff0c;在验证码图片更新后准确率从92%暴跌至17%&#xff0c;这是我们团队最近…...

如何用UAV-Flow实现语音控制无人机?手把手教你搭建环境与避坑指南

如何用UAV-Flow实现语音控制无人机&#xff1f;从环境搭建到实战避坑全指南 当无人机遇上自然语言处理&#xff0c;会擦出怎样的火花&#xff1f;去年接触UAV-Flow时&#xff0c;我正为一个农业巡检项目头疼——传统摇杆控制需要专业飞手&#xff0c;而农户们更习惯说"绕着…...

珠海内有哪些做专精特新,创新型中小企业。权代理事务通过率高

在珠海&#xff0c;众多专精特新、创新型中小企业在发展过程中&#xff0c;知识产权代理事务变得尤为重要&#xff0c;而珠海飞拓知识产权代理事务凭借其独特优势&#xff0c;成为了高通过率的代表。企业痛点催生专业服务在专精特新、创新型中小企业培育与申报过程中&#xff0…...