vue3 自定义调控参数-简易生成器

vue3 自定义调控参数-简易生成器

文章目录

    • 封装生成器控件如下
    • 父组件使用如下:

  • 此功能好像是某厂的在线视频笔试题,当时写完也没有结果。。。
  • 我觉得此 demo 适用场景:自定义动态表单时需要定制字段、用户自定义信息等

封装生成器控件如下

//创建CustomControlParams.vue 文件, 内容如下
<template>
    <div v-for="(item, index) in keyValArr">
        <input type="text" v-model="item.prop" @input="setObj" />
        <span>:</span>
        <input type="text" v-model="item.value" @input="setObj" />
        <button @click="() => onDelete(item.id)">删除</button>
    </div>
    <button @click="onAdd">新增字段</button>
</template>

<script lang="ts" setup>
import { onMounted, ref } from "vue";

//获取随机字符串 32uuid
const getRandomStr = (length = 32) => {
    const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    const maxPos = chars.length;
    let _string = "";
    for (let i = 0; i < length; i++) {
        _string += chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return _string;
}

const props = defineProps({
    customeKeyValue: {
        type: Object,
        default: {}
    }
});

const emits = defineEmits(["update:customeKeyValue"]);

//对象映射成数组,方便操作
const keyValArr = ref<{
    id: string;
    prop: string;
    value: any;
}[]>([]);

//初始转换
onMounted(() => {
    keyValArr.value = Object.keys(props.customeKeyValue).map(prop => ({
        id: getRandomStr(),
        prop,
        value: props.customeKeyValue[prop]
    }));
});

//操作值变化时,同步修改
const setObj = () => {
    let newCustomeKeyValue = {} as any;
    keyValArr.value.map(item => {
        newCustomeKeyValue[item.prop] = item.value;
    });
    emits("update:customeKeyValue", newCustomeKeyValue);
};

//删除
const onDelete = (prop: string) => {
    keyValArr.value = keyValArr.value.filter(item => item.prop !== prop);
    setObj();
};

//添加
const onAdd = () => {
    keyValArr.value.push({
        id: getRandomStr(),
        prop: 'Custom' + Date.now(),
        value: ""
    });
    setObj();
};
</script>

父组件使用如下:

<template>
  <h2>自定义调控参数</h2>
  <CustomControlParams v-model:customeKeyValue="formVal" />
  <div>{{ formVal }}</div>
</template>

<script setup lang="ts">
import { ref } from "vue";
import CustomControlParams from "./CustomControlParams.vue";
const formVal = ref<any>({
  MAX: 1,
  MIN: 2
})
</script>

结果如图:
在这里插入图片描述

  • 没有做相同属性 key 的校验,相同的默认会后定义覆盖之前定义。
  • demo 记录而已。不喜勿喷
    有疑问的同学可以私信我、对帮助到同学欢迎大家点赞、收藏评论。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

社媒营销必看:Instagram网页版使用指南

Instagram在全球有超过10亿的月活跃用户。其每日故事功能有超过5亿的使用量&#xff0c;Instagram用户每天喜欢超过4 亿个帖子——据Instagram的2024年最新报告&#xff0c;粉丝数在10万以下的小品牌在故事上的点击率增长了35%&#xff0c;少于1万个粉丝的品牌的帖子到达率增长…

【懂车帝注册安全报告-无法登陆的背后是?】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

设置smb共享的几个注意事项

samba用户名和密码是可以设置为和创建linux时的系统用户名一样的&#xff0c;方法如下&#xff1a; 1.sudo vi /etc/samba/smb.conf 2.在最下行添加配置 3.添加samba用户名和密码&#xff0c;这里选择和系统用户名一样 sudo smbpasswd -a xuyy 4.重启samba服务 sudo syste…

Linux Ubuntu(玩客云) qBittorrent docker BT下载(qbittorrent 密码错误无法登录 ip地址被禁止登录等)

提示&#xff1a; 需要提前安装Docker 根据qBittorrent官网的更新日志https://www.qbittorrent.org/news &#xff0c;4.6.1.0包含一个重大更新。可以看到自4.6.1.0开始&#xff0c;qBittorrent将弃用adminadmin默认密码&#xff0c;采用随机密码&#xff0c;将在终端控制台输出…

Audition处理音频文件背景音(保留人声)

音频文件背景音可以使用Adobe Audition进行处理&#xff0c;Adobe Audition的下载与安装见之前博客&#xff1a; Adobe Audition 2024 下载与安装-CSDN博客https://blog.csdn.net/xiaoxian666/article/details/138612837?spm1001.2014.3001.5502 一、选中一段不含人声的背景…

【分治算法】【Python实现】循环赛日程表

文章目录 [toc]问题描述分治算法示例Python实现 无运动员数量约束循环赛日程表算法示例Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;分治算法 学习指南&#xff1a;Python学习指南 问题描述 设有 n 2 k n 2^{k} n2k个运动员要进行网球循环赛&#xff0c;设…

MySQL利用变量进行查询操作

新建连接&#xff0c;自带world数据库&#xff0c;里面自带city表格。 # MySQL利用变量进行查询操作 set cityNameHaarlemmermeer; select * from city where NamecityName;# 多个结果查询 set cityName1Haarlemmermeer; set cityName2Breda; set cityName3Willemstad; selec…

友思特分享 | 激发专属跃迁:用于皮肤医美和光学研究种子源的DPSS激光器

导读 紧凑、坚固、稳定和提供高质量光束的友思特DPSS激光器因其卓越的性能&#xff0c;可作为激光种子源&#xff0c;广泛应用于皮肤医美、非线性光学OPO&#xff0c;以及全息投影技术。 激光&#xff08;Laser&#xff09;的诞生是上个世纪科学技术的巨大飞跃&#xff0c;其发…

【工具】如何提取一个mp4文件的关键帧

文章目录 怎么做如何安装ffmepgUbuntu 或 DebianCentOS 或 FedoramacOSWindows其他 Linux 发行版 实践什么是关键帧 怎么做 你可以使用ffmpeg这个强大的多媒体处理工具来提取mp4文件中的关键帧。以下是一个示例命令&#xff0c;可以使用ffmpeg从mp4文件中提取关键帧&#xff1…

Ansible-inventory和playbook

文章目录 一、inventory 主机清单1、列表表示2、inventory 中的变量3、变量3.1 主机变量3.2 组变量3.3 组嵌套 二、playbook剧本1、playbook的组成2、编写剧本2.1 剧本制作2.2 准备nginx.conf2.3 运行剧本2.4 查看webservers服务器2.5 补充参数 3、剧本定义、引用变量3.1 剧本制…

java爬虫代理ip(java爬虫代码示例)

java爬虫代理ip 在编写java爬虫时&#xff0c;经常会遇到需要使用代理IP来访问目标网站的情况。这时候&#xff0c;我们就需要编写代码来实现代理IP的功能。接下来&#xff0c;我们将为大家介绍如何在java爬虫中使用代理IP&#xff0c;以及给出相应的代码示例。 首先&#xff…

聚观早报 | 苹果新款iPad Pro发布;国产特斯拉4月交付量

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 5月9日消息 苹果新款iPad Pro发布 国产特斯拉4月交付量 iOS 18新功能爆料 真我GT Neo6续航细节 三星Galaxy Z F…

Linux——守护进程化(独立于用户会话的进程)

目录 前言 一、进程组ID与会话ID 二、setsid() 创建新会话 三、daemon 守护进程 前言 在之前&#xff0c;我们学习过socket编程中的udp通信与tcp通信&#xff0c;但是当时我们服务器启动的时候&#xff0c;都是以前台进程的方式启动的&#xff0c;这样很不优雅&#xff0c…

限时优惠||新算法转让(一种基于数学的元启发式算法)新的群智能算法转让,新的元启发式算法转让(独家发售)【仅售1份】

新算法 ||新算法转让、新的元启发式算法转让 ||一种基于数学开发的超隐喻的元启发式算法新算法 限时发售、限量1份 1️⃣完整的封装代码 2️⃣配套完整的灵感及数据 3️⃣测试集&#xff08;3个&#xff09; &#xff08;1&#xff09;cec2017&#xff08;10、30、50和100维&a…

搞笑聊天截图,几分钟一条原创爆款,多平台发布

利用男女搞笑聊天截图制作原创 这种在抖音很常见相信你也刷到过&#xff0c;这种视频做起来很简单&#xff0c;但是他的点赞很高&#xff0c;只需要搭配好文案就OK&#xff0c; 这种视频通过课程完成之后都是原创视频&#xff0c;我们可以去发抖音&#xff0c;进行中视频变现…

Linux 操作系统网络编程2

1、TCP服务器编写流程 头文件&#xff1a; #include <sys/socket.h> 1.1 创建套接字 函数原型&#xff1a; int socket(int domain, int type, int protocol); 参数&#xff1a; domain: 网域 AF_INET &#xff1a; IPv4 AF_INET6 &a…

docker-compose安装 人大金仓数据库

下载官网安装包 将安装包重命名为: kingbase.tar 再导入镜像仓库 docker load -i kingbase.tar目录创建data文件夹创建docker-compose文件 version: 3 services: kingbase: image: kingbase:v1 container_name: kingbaseports: - "54321:54321" volumes: -…

Core_Air724UG学习

产品描述 Core_Air724UG核心板是基于Air724UG cat1模板制作的开发实验板。 该模块支持Lua二次开发或AT指令&#xff0c;方便开发者根据自己的需求灵活选择。 Core_Air724UG核心板专注于小型化&#xff0c;PCB尺寸4246mm&#xff0c;有12x22哥标准2.54mm排针管脚&#xff0c;其…

IT项目管理-大题【太原理工大学】

一、根据进度网络写出时间参数表、关键路径、总工期 此类题一般是给一个表&#xff0c;问三问。 第一问会问某个活动的时间参数&#xff0c;但我们需要把整个表都求出来&#xff0c;否则单求一个很困难&#xff08;如果你就是不想求整张表也行&#xff0c;不是硬性要求&#xf…

HR招聘面试,如何测评候选人的执行力和岗位胜任力

执行力是人才测评中的重要组成&#xff0c;尤其是对于小微企业那就更加重要了&#xff0c;几乎每个岗位都需要员工有独挡一面的能力&#xff0c;没有执行力的员工是无法在中小企业生存的&#xff0c;那么对于大型企业来说&#xff0c;是不是执行力不重要&#xff1f;非也&#…