首先,使用过element-ui的table组建的同学都知道,每次使用的时候表头字段都要一个一个的去写,写起来很麻烦,既不美观又浪费时间,基于以上原因,对table组件进行二次封装,使我们在使用的时候更加简单方便。

这里只是简单的封装,同学们若是感兴趣可以加以完善,若有问题可以一起讨论。

//封装的table组件
<template>
<!-- 列表 -->
<el-table
stripe
:border="border"
:data="dataSource"
@selection-change="handleSelectionChange"
v-loading="listLoading"
@row-dblclick="rowClick"
highlight-current-row
@row-click="clickTable"
ref="refTable"
@expand-change="expandChange"
>
<!--数据源-->
<el-table-column
v-for="(column, index) in columns"
header-align="center"
v-if="column.isShow"
:sortable="column.hasSort"
:key="column.prop"
:prop="column.prop"
:label="column.label"
:align="column.align"
:width="column.width">
</el-table-column >
</el-table>
</template>
<script>
export default {
name:"tables",
props:{
dataSource: {// 表格数据源 默认为空数组
type: Array,
default: ()=> []
},
columns: {// 表格的字段展示 默认为空数组
type: Array,
default: ()=>[]
}
},
components: {
//
},
watch:{
//
},
mounted(){
//
},
methods: {
//
}
}
</script>
<style lang="scss">
//
</style>

封装完成后怎么调用这个组件呢?

//调用封装好的table组件
<template>
//这里仅传入列表数据和表头数据,如有其它需求可以增加传递参数
<tables :dataSource="dataSource" :columns="columns"></tables>
</template>
<script>
import tables from './table.vue' //引入组件
export default {
data() {
return {
dataSource:[{
'createTime':123,
'times':123,
'username':'jj',
'deptName':'ii',
'status':'0',
},{
'createTime':123,
'times':123,
'username':'jj',
'deptName':'ii',
'status':'0',
},{
'createTime':123,
'times':123,
'username':'jj',
'deptName':'ii',
'status':'0',
}],
columns:[{
hasSort: false, //<Boolean> 是否排序
isShow: true, //<Boolean> 是否展示
prop: 'createTime', //<String> 对应属性名
label: '日期', //<String> 表头标签
align: 'center',//表头内容是否居中
width: 200, // 列宽
},{
hasSort: false, //<Boolean> 是否排序
isShow: true, //<Boolean> 是否展示
prop: 'times', //<String> 对应属性名
label: '时间', //<String> 表头标签
align: 'center'//表头内容是否居中
},{
hasSort: true, //<Boolean> 是否排序
isShow: true, //<Boolean> 是否展示
prop: 'username', //<String> 对应属性名
label: '名字', //<String> 表头标签
align: 'center'//表头内容是否居中
},{
hasSort: true, //<Boolean> 是否排序
isShow: true, //<Boolean> 是否展示
prop: 'deptName', //<String> 对应属性名
label: '部门名称', //<String> 表头标签
align: 'center'//表头内容是否居中
},{
hasSort: true, //<Boolean> 是否排序
isShow: true, //<Boolean> 是否展示
prop: 'status', //<String> 对应属性名
label: '状态', //<String> 表头标签
align: 'center'//表头内容是否居中
}
]
}
},
components: {
tables,//注册table组件
},
watch:{
//
},
mounted(){
//
},
methods: {
//
}
}
</script>
<style lang="scss">
//
</style>

下面是我的公众号二维码,欢迎同学们关注,大家一起学习,一起进步。

对element-ui的table组件的二次封装的更多相关文章

  1. vue问题三:element ui的upload组件上传图片成功和移除事件

    element ui的upload组件上传图片成功和移除事件: 登录后获取到后台传的token存到中: sessionStorage.setItem("token",data.ob ...

  2. Vue+element UI实现分页组件

    介绍 这是一个是基于element-UI的分页组件基础上,进行了二次封装的分页组件,在展示数据时,该分页组件采用了每显示一页数据,只请求当前页面的数据的请求策略,从而避免了一次性将数据全部请求所造成的 ...

  3. vue+element ui项目总结点(二)table合计栏目,按照起始年份--截止年份 插入数据并向后追加数据以最后一条年份+1

    1.oninput 事件在用户输入时触发; <template> <div class="test_box"> <p>hell,你好</p ...

  4. 关于Element UI中select组件中遇到的问题

    问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...

  5. react ,ant Design UI中table组件合并单元格并展开详情的问题

    需求:购物车订单列表,如图: 一:单元格合并 遇到这种你会怎么办呢?  单元格合并?  还是其他的方法? 下面是我的处理方式,就是在table 组件的columns上处理,这里拿商品举例,其余的类似, ...

  6. 09 - Vue3 UI Framework - Table 组件

    接下来做个自定义的表格组件,即 table 组件 返回阅读列表点击 这里 需求分析 开始之前我们先做一个简单的需求分析 基于原生 table 标签的强语义 允许用户自定义表头.表体 可选是否具有边框 ...

  7. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  8. Bootstrap Blazor Table 组件(二)

    原文链接:https://www.cnblogs.com/ysmc/p/16128206.html 很多小伙伴在使用 Bootstrap Blazor Table组件的时候,都会有这样的一个需求: 我 ...

  9. 基于bootstrap table配置的二次封装

    准备 jQuery js css 引用完毕 开始 如果对bootstrap table 的方法与事件不熟悉: Bootstrap table方法,Bootstrap table事件 <table ...

随机推荐

  1. NumPy 初学者指南中文第三版·翻译完成

    原文:NumPy: Beginner's Guide - Third Edition 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅 ...

  2. Java基础之Scanner类中next()与nextLine()方法的区别

    java中使用Scanner类实现数据输入十分简单方便,Scanner类中next()与nextLine()都可以实现字符串String的获取,所以我们会纠结二者之间的区别. 其实next()与nex ...

  3. 使用ajax上传文件

    1. XMLHttpRequest(原生ajax) [](javascript:void(0) <input class="file" type="file&quo ...

  4. Docker的数据管理、网络通信和dockerfile

    Docker的数据管理.网络通信和dockerfile 目录 Docker的数据管理.网络通信和dockerfile 一.Docker的数据管理 1. 数据卷 1.1 数据卷定义 1.2 数据卷配置 ...

  5. 基于人工智能标记语言 (AIML)和任务型对话系统(Task)的深度智能对话机器人demo

    起因 本demo基于基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型而来 无意间发现一个基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型,但 ...

  6. Java多线程经典案例分享

    汇总 案例一 案例二 案例三 案例四 案例五 案例六 案例七 案例一 实现一个容器,提供两个方法,add(),count() 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数 ...

  7. Spark算子 - aggregate

    释义 将每个partition内元素进行聚合,然后将每个partition的聚合结果进行combine,得到最终聚合结果.最终结果允许跟原始RDD类型不同 方法签名如下: def aggregate[ ...

  8. 年前最后一次2022.1.28_RP++

    T1同昨(我看到题目就粘上昨天的代码,结果题还没发我就A了hhhhhh) T2一开始想用深搜,结果T掉了...只好改广搜,就挺令人头大 点击查看宽广对比 #include<bits/stdc++ ...

  9. 前端框架 bootstrap 的使用

    内容概要 前端框架 bootstrap 简介 引入方式 布局容器 栅格系统 图标 内容详细 简介 网址:https://v3.bootcss.com/ 版本: 2.X 3.X 4.X 推荐使用3.X版 ...

  10. 看我如何使用 shell 来获取所有 KVM 虚拟机的 IP 地址

    文章目录 脚本说明 脚本展示 效果展示 此脚本的初衷是因为,KVM创建的桥接网卡的虚拟机,无法使用virsh domifaddr命令获取IP,而创建的nat网卡的虚拟机,则可以直接使用virsh do ...