动态的控制表格列的展示,

  • 可以勾选和取消某一列的显示
  • 本地存储上一次的配置
  • 表格内容支持通过slot自定义内容
    在这里插入图片描述

例子1

<script setup>
import { reactive, ref, watch } from "vue";
import one from "./components/one.vue";
import One from "./components/one.vue";
const tableData = [{id: 1,age: "2016-05-03",name: "Tom",address: "No. 189, Grove St, Los Angeles",},{id: 2,age: "2016-05-02",name: "Tom",address: "No. 189, Grove St, Los Angeles",},{id: 3,age: "2016-05-04",name: "Tom",address: "No. 189, Grove St, Los Angeles",},{id: 4,age: "2016-05-01",name: "Tom",address: "No. 189, Grove St, Los Angeles",},
];const config = {name: {label: "name",prop: "name",canHidde: false,},age: {label: "age",prop: "age",canHidde: false,},address: {label: "address",prop: "address",canHidde: false,redner: One,},id: {label: "id",prop: "id",canHidde: true,},
};let state = reactive({});
if (localStorage.getItem("state")) {//JDON.parse()解析时可能会出现解析错误的情况,要使用try catch包裹try {// reactive不能直接复制整个对个,可以重新复制reactivestate = reactive(JSON.parse(localStorage.getItem("state")));} catch (e) {console.log(e);}
} else {Object.keys(config).forEach((key) => {state[key] = true;});
}
const setState = (state) => {localStorage.setItem("state", JSON.stringify(state));
};watch(state, (val) => {setState(val);
});
</script><template><div><div v-for="item in Object.keys(state)"><div><span>{{ config[item].label }}</span><el-checkboxv-model="state[item]":disabled="config[item].canHidde"></el-checkbox></div></div><el-table :data="tableData" style="width: 100%"><template v-for="item in Object.keys(state)" :key="item"><!---v-bind可以快速绑定多个变量--><el-table-column v-bind="config[item]" v-if="state[item]"><template #header><div><span>{{ config[item].label }}</span><el-checkboxv-model="state[item]":disabled="config[item].canHidde"></el-checkbox></div></template><template v-if="config[item].redner" #default="scoped"><component :is="config[item]?.redner" :scoped="scoped"></component></template></el-table-column></template></el-table></div>
</template><style scoped></style>

例子2 ,插槽使用 h函数渲染

  • 模板中的插值语法 {{ }} 的作用是:把表达式的值转换成字符串,插入到 HTML 中。

  • h() 返回一个 VNode 对象, 让 Vue 把一个 VNode 对象 转成字符串。Vue 内部会尝试 JSON.stringify(vnode),但 VNode 对象中包含循环引用(如 vnode.component.vnode 指回自己),所以就会报错:
    在这里插入图片描述

  • <component :is="..."> 不仅可以切换组件,还可以直接渲染 VNode

<script setup>
import { reactive, ref, watch, h } from "vue";
const config = {name: {label: "name",prop: "name",canHidde: false,},age: {label: "age",prop: "age",canHidde: false,},address: {label: "address",prop: "address",canHidde: false,render: (scoped) => {return h("div",{style: {color: "red",},},scoped.row.address);},},id: {label: "id",prop: "id",canHidde: true,},
};
</script><template><div><el-table :data="tableData" style="width: 100%"><template v-for="item in Object.keys(state)" :key="item"><el-table-column v-bind="config[item]" v-if="state[item]"><template #header><div><span>{{ config[item].label }}</span><el-checkboxv-model="state[item]":disabled="config[item].canHidde"></el-checkbox></div></template><template v-if="config[item].render" #default="scoped"><!--{{config[item].render(scoped)}}直接这样使用会报错-->    <component :is="config[item].render(scoped)" /></template></el-table-column></template></el-table></div>
</template>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微积分[4]|高等数学发展简史(两万字长文)

文章目录前言解析几何学微积分学级数理论常微分方程&#xff5c;(1) 萌芽阶段&#xff5c;(2) 初创阶段&#xff5c;(3) 奠基阶段&#xff5c;(4) 现代发展阶段前言 高等数学通常仅是相对初等数学而言的&#xff0c;其内容并无身份确切的所指&#xff0c;大凡初等数学以外的数…

系统思考—啤酒游戏经营决策沙盘认证

下周&#xff0c;我们将为企业交付——《啤酒游戏经营决策沙盘—应对动态复杂系统的思考智慧》内部讲师认证课。啤酒游戏沙盘&#xff0c;我已交付过上百场。但这次的讲师认证班&#xff0c;不仅仅是分享课程技巧&#xff0c;更多的是分享“心法”。有些关键点&#xff0c;直到…

深入详解PCB布局布线技巧-去耦电容的摆放位置

目录 一、基础概念与核心作用 二、布局五大黄金原则 三、模拟电路的特殊处理 四、高频场景优化方案 和旁路电容是保障电源稳定性和信号完整性的核心元件。尽管它们的原理和作用常被讨论,但实际布局中的细节往往决定成败。 一、基础概念与核心作用 去耦电容:主要用于抑制…

布隆过滤器的原理及使用

背景介绍在互联网中&#xff0c;我们经常遇到需要在大量数据中判断目标数据是否存在的情况。例如&#xff0c;在网络爬虫中&#xff0c;我们需要判断某个网址是否已经被访问过。为了实现这一功能&#xff0c;通常需要使用一个容器来存储已访问过的网址。如果将这些数据直接存储…

达梦 vs. Oracle :架构篇①——从“联邦制”到“中央集权”

1. 引言&#xff1a;为何体系结构是第一课&#xff1f; 对于任何一个数据库而言&#xff0c;其体系结构是决定其性格、性能和应用场景的“基因”。理解了体系结构&#xff0c;尤其是在两种数据库之间进行切换时&#xff0c;才能真正做到知其然&#xff0c;并知其所以然。在所有…

我的世界Java版1.21.4的Fabric模组开发教程(十九)自定义生物群系

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十九章——自定义生物群系。想要阅读其他内容&#xff0c;请查看或订阅上面的专栏。 生物群系(Biome) 是Minecraft中世界不同区域呈现特定的地貌景观&#xff0c;这些区域与现实世界类似&#xff0c;都具有和其…

Mac (三)如何设置环境变量

目录一、查看环境变量 &#x1f50d;1. 查看所有环境变量2. 查看特定变量二、临时设置&#xff08;当前终端有效&#xff09; ⚡1. 基本语法2. 实战示例三、永久设置&#xff08;全局生效&#xff09; &#x1f512;配置步骤&#xff1a;四、实战案例 &#x1f6e0;️案例1&…

零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时

摘要&#xff1a;在信创窗口期&#xff0c;我们把拥有2000存储过程、300链接服务器的核心业务&#xff0c;从 SQL Server 2016/2019 平移到 KingbaseES V9R4C12&#xff08;SQL Server 兼容版&#xff09;。本文以 30 分钟部署、TPCH 100G 性能 PK、真实踩坑修复、灰度割接 4 小…

K8S HPA 弹性水平扩缩容 Pod 详解

文章目录1、前置准备2、需求场景3、Scale 静态扩缩容3.1、创建 Deployment 脚本3.2、Scale 扩缩容3、HPA 自动扩缩容3.1、安装 Metrics3.2、创建 Deployment 演示案例3.3、创建 HPA3.4、触发 HPA 自动扩缩容1、前置准备 本次案例演示&#xff0c;我选择了阿里云ECS&#xff08…

对话访谈|盘古信息×智晟威:深度挖掘数字化转型的奥秘

在数字化转型的浪潮中&#xff0c;传统设备企业如何突破“纯硬件”的边界&#xff0c;实现从“卖产品”到“卖生态”的跨越&#xff1f;数字化转型究竟是“高不可攀的奢侈品”&#xff0c;还是“触手可及的生存技能”&#xff1f;近日&#xff0c;广东盘古信息科技股份有限公司…

什么是模型预测控制?

一、概念模型预测控制&#xff08;Model Predictive Control, MPC&#xff09;是一种先进的控制方法&#xff0c;广泛应用于工业过程控制、机器人控制、自动驾驶等领域。MPC的核心思想是利用系统的动态模型预测未来的行为&#xff0c;并通过优化算法计算出当前时刻的最优控制输…

类与类加载器

在Java中&#xff0c;类和类加载器是密切相关的两个概念&#xff0c;理解它们有助于我们更好地掌握Java的运行机制。什么是Java类&#xff1f;Java类就像是一个模板或蓝图&#xff0c;它定义了对象的属性和行为。比如"汽车"可以看作一个类&#xff0c;它有颜色、品牌…

一文速通Python并行计算:14 Python异步编程-协程的管理和调度

一文速通 Python 并行计算&#xff1a;14 Python 异步编程-协程的管理和调度 摘要&#xff1a; Python 异步编程基于 async/await 构建协程&#xff0c;运行在事件循环中。协程生成 Task&#xff0c;遇到 await 时挂起&#xff0c;I/O 完成触发回调恢复运行&#xff0c;通过…

Node.js面试题及详细答案120题(16-30) -- 核心模块篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

RabbitMQ:Windows版本安装部署

目录一、概述二、OPT三、安装RabbitMQ四、登录测试一、概述 什么是MQ&#xff0c;有什么做作用&#xff1f; MQ即MessageQueue&#xff0c;消息队列。可以分为两部分理解&#xff1a;消息Message用于在不同的应用程序中传递数据。队列Queue&#xff0c;一种FIFO先进先出的数据…

酒店行业安全体系构建与优化策略

酒店行业安全体系构建与优化策略为确保酒店行业领导及宾客的安全&#xff0c;构建全面的治安联防体系及事故处理预案至关重要。某招待所通过设立保卫部&#xff0c;细化内保、治安、防火及交通管理职能&#xff0c;并下设警卫班、监控中心和电瓶车班&#xff0c;以全方位保障安…

python30-正则表达式

在Python中需要通过正则表达式对字符串进⾏匹配的时候&#xff0c;可以使⽤⼀个python自带的模块&#xff0c;名字为re。 re模块的使用&#xff1a;import re 一、匹配函数 1-1、re.match函数&#xff1a;返回匹配对象 match函数实现的是精准匹配&#xff0c;尝试从字符串的…

EP1C12F324I7N Altera Cyclone FPGA

EP1C12F324I7N 是 阿尔特拉 Altera Cyclone 系列中的一款 SRAM-based FPGA&#xff0c;定位为低成本、低功耗、面向嵌入式与消费/工业类量产应用的器件。该器件提供约 12,060 个逻辑单元&#xff08;Logic Elements&#xff09;&#xff0c;片上嵌入式存储约 234 kbit&#xff…

html5语义元素

1、参考&#xff1a;HTML5 语义元素 | 菜鸟教程 2、实战 HTML5 <section> 元素 <section> 标签定义文档中的节&#xff08;section、区段&#xff09;。比如章节、页眉、页脚或文档中的其他部分。 根据W3C HTML5文档: section 包含了一组内容及其标题。 <!D…

java调用PyTorch 训练模型实现神经网络全流程

以下是完整的操作流程:用 PyTorch 训练模型 → 导出为 ONNX 格式 → 用 Java 加载并推理,兼顾开发效率(PyTorch 快速训练)和生产部署(Java 稳定运行)。 一、PyTorch 训练模型并导出为 ONNX 1. 安装依赖 bash pip install torch onnx # PyTorch 和 ONNX 库2. 训练一个…