Element Table 可以实现哪些常见的有用的功能

最近项目中频繁使用 table 功能,因为 UI 框架使用的又是 Element UI,于是总结下在 Element 下 el-table 组件使用技巧。

1.行背景色

table 组件提供了 row-style 属性,说明:行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style

于是我们可以在 method 中写一个 setRowStyle 方法,通过行索引和背景色数组去匹配颜色值用于单元格背景色。

setRowStyle({row, rowIndex}) {return {'background-color': this.rowsBgColor[rowIndex]}}

而触发设置我们可以在最后一栏添加名称为“操作”的下拉菜单按钮,在菜单里增加行背景色菜单,鼠标移上去,在左侧出现的 el-popover 组件中引入 color-picker 组件用于颜色选择。

2.合并单元格

Table 组件下面有 span-method 属性,说明:合并行或列的计算方法,传入的参数有 rowcolumnrowIndexcolumnIndex

:span-method="objectSpanMethod"

然后我们实现 objectSpanMethod 方法,注意这里的 afterSpanArray 为一个包含第一列和第二列 Prop 值的为属性值的对象,然后这两个属性所对应的 value 值分别为合并行值的数组。

objectSpanMethod ({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0 || columnIndex === 1) {const _rowspan = this.afterSpanArray[column.property][rowIndex]const _colspan = _rowspan > 0 ? 1 : 0return {rowspan: _rowspan,colspan: _colspan}}}

3.表格统计

Table 组件提供了 show-summary 属性,说明:是否在表尾显示合计行,它的值是 Boolean 类型的,如果设置为 true,则表格底部为会增加“合计”的一行,它只会统计单元格值是数字的列。

另外,配合这个属性,还有一个 summary-method 的属性,说明:自定义的合计计算方法,回调函数的参数 columns 和 data(表格显示数据) 组成的对象。

:summary-method="getSummaries"

这样我们在此封装一个满足自己规则的统计方法,如果单元格里已经包含了产品线的统计行,那么最后总的人力统计就要减去它。

getSummaries(param) {const { columns } = paramconst sums = []const weekSum = {}this.deptManpowerSum.forEach((deptManpower, index) => {let key = 'col' + deptManpower.week.replace(/-/g, '')weekSum[key] = deptManpower.weeklyTotal})columns.forEach((column, index) => {if (index === 0) {sums[index] = '部门总人力'return}if (weekSum.hasOwnProperty(column.property)) {sums[index] = weekSum[column.property]} else {sums[index] = ''}})return sums}

4.行展开

当表格展示数据有限,又不想单独设置详情页面显示,可以使用行的展开项,以文本的格式显示。

需要用到两个属性 row-key 和 expand-row-keys (通过该属性设置 Table 目前的展开行,其值为展开行的 keys 数组)

:row-key="(row) => {return row.id}"
:expand-row-keys="expandRows"

展开行的内容需要增加 type 属性为 expand 的 el-table-column 标签

<el-table-column type="expand"><template v-slot="{row}"></template>
</el-table-column>

这样默认触发展开是点击单元格中的向右箭头。可以如果我们想点击行的任何地方即可展开,该怎么办?也是有办法的,table 组件提供了 row-click 方法

@row-click="clickRowHandle"</pre>

它的回调的参数是行数据,我们在此维护了一个数组存储当前展开行的 id 值。

clickRowHandle(row) {if (this.expandRows.includes(row.id)) {this.expandRows = this.expandRows.filter(val => val !== row.id)} else {this.expandRows.push(row.id)}
}

注意:这里有个陷阱,当你点击向右箭头展开和行以外的地方展开,两个不同的事件,导致存储的这个数组的值和事件不一致。即你从行点击展开,数组中存储了该行的 id 值,但是你点击向右箭头收起,而这个 id 并没有从数组中移除,下次再次点击其它行,这一行也会自动展开。

这个陷阱也是有办法弥补的,从文档中我们看到 Table 提供了另外一个 expand-change 方法,用于监听行展开收起事件,这样不管你从哪点击行展开,都可以知道。

@expand-change="rowExpandChange"

该函数回调参数有两个,一个是 row 和 expandedRows

rowExpandChange(row, expandedRows) {this.clickRowHandle(row)
}

这样我们在该方法中执行一遍以上点击事件即可。

以上是我从项目中总结的常用的一些方式。Table 组件提供了丰富的属性和方法,相信还可以结合使用实现更多有用的功能。

- END -

文章精选

前端如何进行日志驱动开发

微页面开发设计指南

【详细教程】教你如何使用Node + Express + Typescript开发一个应用

太空编程

分享硬核的编程知识

分享精彩,码上快乐。JavaScript已然上天,有朝一日实现太空编程!回复【pdf】更有海量的优质电子书供下载。

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

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

相关文章

从0开始 Java实习 黑白棋

黑白棋的设计 代码如下&#xff1a; import java.util.*; public class Chess{char[][] chess new char[16][16];public static void main(String args[]){ Scanner in new Scanner(System.in);Chess ch new Chess();ch.init(); ch.output();int tag 0;int nn 0;wh…

如果在这样的环境中写代码,会不会很高效

桌面环境分享系列又来了。我会把平时看到的好的桌面布置分享给大家&#xff0c;帮助大家在桌面整理和打造方面提供一些新的想法和创意。如何评价一个开发桌面的好坏&#xff0c;首先一定要清爽整洁&#xff0c;该有的家伙事儿一定要有。不是要看上去要有多高大上&#xff0c;重…

为什么选择SpringBoot?

使用Spring MSpring进行许可是一种非常流行的基于Java的框架&#xff0c;用于构建Web和企业应用程序。 与许多其他只关注一个领域的框架不同&#xff0c;Spring框架通过其投资组合项目提供了广泛的功能来满足现代业务需求。 Spring框架提供了以多种方式&#xff08;例如XML &a…

wamp2.5可用php5.6,局域网访问,多站点配置

1.用php5.6 直接下载个wamp3.0的&#xff0c;那里的php支持5.6&#xff0c;安装之后把php5.6的文件夹剪切到wamp2.5的放php的文件夹&#xff0c;然后wamp那里就有php5.6的选择了&#xff0c;选择后就可以用了 2.局域网访问 打开apache的配置文件&#xff0c;然后搜索Require lo…

Vue 页面如何监听用户预览时间

最近的业务中涉及到这样一个需求&#xff0c;在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长。初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed&#xff0c;分别在其中加入开始计时和清除计时的逻辑&#xff0c;通过后台的接口上报对应…

一个追求高效的学习者手机里装有哪些APP?(转)

转载&#xff1a;http://www.jianshu.com/p/f568c8d8b6bb 1、录音软件-Recordium 参加活动&#xff0c;如果不想错过活动现场的经常片段&#xff0c;速记又来不及&#xff0c;那就选择录音吧。小六之前都使用录音笔&#xff0c;但是自从有了这个APP之后&#xff0c;在开会&…

spring social_Spring Social入门

spring social像我一样&#xff0c;无论是添加简单的Facebook“赞”按钮&#xff0c;一大堆“共享”按钮还是显示时间轴信息&#xff0c;您都不会注意到当前对应用程序“社交化”的热衷。 每个人都在做这件事&#xff0c;包括Spring的家伙&#xff0c;事实上&#xff0c;他们提…

Vue 页面如何利用生命周期函数监听用户预览时长

最近的业务中涉及到这样一个需求&#xff0c;在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长。初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed&#xff0c;分别在其中加入开始计时和清除计时的逻辑&#xff0c;通过后台的接口上报对应…

iOS 11 UICollectionView顶部出现白色间隔的问题

iOS11 UICollectionView顶到屏幕顶端会出现一个20高度的白色间隔&#xff0c;是由于UICollectionView的自动调整功能为状态栏留出的位置 只需在创建UICollectionView时加入如下代码关闭自动调整&#xff1a; 该属性是iOS11新加入的&#xff0c;所以一定要在前面加上判断&#x…

项目中的富文本编辑器该如何选择?

项目中经常需要用到富文本编辑器的时候&#xff0c;而常见的富文本编辑器都有哪些&#xff1f;该如何选择&#xff1f; 先看看市面上都有哪些可用的富文本编辑器&#xff1a; TinyMCE&#xff08;插件式的&#xff0c;支持 Vue&#xff0c;React&#xff0c;Angular 框架&…

根据自己的博客数据统计国内IT人群

装上百度统计有一段时间了&#xff0c;今天突然找出报表看看&#xff0c;发现一个很有意思的事情。访问来源TOP5依次是&#xff1a;北京&#xff0c;上海&#xff0c;深圳&#xff0c;杭州&#xff0c;广州 虽然大部分文章都是当时特别白的时候记录下来的遇到过的问题&#xff…

Vue刷新页面有哪几种方式

在Vue项目中&#xff0c;刷新当前页除了 window.reload()&#xff0c;你还能想到什么办法&#xff1f;而且这种办法会重新加载资源出现短暂的空白页面。体验不是很好。 在某个详情页面的时候&#xff0c;我们经常需要通过路由中的详情 id 去获取内容&#xff0c;当我们在不同的…

java web服务_将Java服务公开为Web服务

java web服务本教程解决了开发人员面临的最实际的情况。 大多数时候&#xff0c;我们可能需要将某些现有服务公开为Web服务。 在项目生命周期的不同阶段可能会遇到这种情况。 如果这是初始阶段&#xff0c;那么您几乎是安全的&#xff0c;您可以为此做好充分的准备。 但是&…

python文件打开方式详解——a、a+、r+、w+区别

第一步 排除文件打开方式错误&#xff1a;r只读&#xff0c;r读写&#xff0c;不创建w新建只写&#xff0c;w新建读写&#xff0c;二者都会将文件内容清零&#xff08;以w方式打开&#xff0c;不能读出。w可读写&#xff09;**w与r区别&#xff1a;r&#xff1a;可读可写&#…

程序员的工作周报该怎么写?

大多数公司都有写周报的要求&#xff0c;为什么要写周报&#xff1f;很多流于形式的周报&#xff0c;会让员工感到厌烦。特别是程序员&#xff0c;你让他写代码可以&#xff0c;写这种篇幅稍微大点的文字&#xff0c;简直要了他的命。周报作为一种文字载体&#xff0c;是下级向…

一个快速生成元素背景的 React 组件

在开发过程中&#xff0c;我们经常会遇到使用背景的地方&#xff0c;比如登录页面&#xff0c;用户信息页面&#xff0c;封面图…… 寻找契合业务主题的背景十分耗费精力&#xff0c;总觉得做的背景不合适&#xff0c;如果直接用图片呢&#xff0c;逻辑是比较简单&#xff0c;但…

引入ReactiveInflux:用于Scala和Java的无阻塞InfluxDB驱动程序,支持Apache Spark

我很高兴宣布Pygmalios开发的ReactiveInflux的第一个发行版。 InfluxDB错过了Scala和Java的非阻塞驱动程序。 不变性&#xff0c;可测试性和可扩展性是ReactiveInflux的关键功能。 加上对Apache Spark的支持&#xff0c;它是首选武器。 https://github.com/pygmalios/reactive…

python之路_前端基础之Bootstrap 组件

文档内容参考地址&#xff1a;http://v3.bootcss.com/components/ 一、图标 如下例&#xff0c;Star文本前有一个空格&#xff1a; <button type"button" class"btn btn-default btn-lg"><span class"glyphicon glyphicon-star" aria-h…

内卷之下,前端工程师如何自救

近两年的职场内卷现象越来越严重&#xff0c;996 工作制在各大公司已经很常见&#xff0c;甚至有更甚者&#xff0c;告诉你我们公司的前端是如何内卷的&#xff1f;为了数字化转型&#xff0c;公司要为产品平台化打造一个办公协同的在线管理系统&#xff0c;来规范化项目流程管…

Java核心技术 卷1 多线程----线程安全的集合(4)

如果多线程要并发的修改一个数据结构&#xff0c;例如散列表&#xff0c;那么很容易会破坏这个数据结构。一个线程可能要开始向表中插入一个新元素。假定在调整散列表各个桶之间的链接关系的过程中&#xff0c;被剥夺了控制权。如果另一个线程也开始遍历同一个链表&#xff0c;…