对element-ui的table组件的二次封装
首先,使用过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组件的二次封装的更多相关文章
- vue问题三:element ui的upload组件上传图片成功和移除事件
element ui的upload组件上传图片成功和移除事件: 登录后获取到后台传的token存到中: sessionStorage.setItem("token",data.ob ...
- Vue+element UI实现分页组件
介绍 这是一个是基于element-UI的分页组件基础上,进行了二次封装的分页组件,在展示数据时,该分页组件采用了每显示一页数据,只请求当前页面的数据的请求策略,从而避免了一次性将数据全部请求所造成的 ...
- vue+element ui项目总结点(二)table合计栏目,按照起始年份--截止年份 插入数据并向后追加数据以最后一条年份+1
1.oninput 事件在用户输入时触发; <template> <div class="test_box"> <p>hell,你好</p ...
- 关于Element UI中select组件中遇到的问题
问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...
- react ,ant Design UI中table组件合并单元格并展开详情的问题
需求:购物车订单列表,如图: 一:单元格合并 遇到这种你会怎么办呢? 单元格合并? 还是其他的方法? 下面是我的处理方式,就是在table 组件的columns上处理,这里拿商品举例,其余的类似, ...
- 09 - Vue3 UI Framework - Table 组件
接下来做个自定义的表格组件,即 table 组件 返回阅读列表点击 这里 需求分析 开始之前我们先做一个简单的需求分析 基于原生 table 标签的强语义 允许用户自定义表头.表体 可选是否具有边框 ...
- vue+element ui中select组件选择失效问题原因与解决方法
codejing 2020-07-10 09:13:31 652 收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...
- Bootstrap Blazor Table 组件(二)
原文链接:https://www.cnblogs.com/ysmc/p/16128206.html 很多小伙伴在使用 Bootstrap Blazor Table组件的时候,都会有这样的一个需求: 我 ...
- 基于bootstrap table配置的二次封装
准备 jQuery js css 引用完毕 开始 如果对bootstrap table 的方法与事件不熟悉: Bootstrap table方法,Bootstrap table事件 <table ...
随机推荐
- NumPy 初学者指南中文第三版·翻译完成
原文:NumPy: Beginner's Guide - Third Edition 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅 ...
- Java基础之Scanner类中next()与nextLine()方法的区别
java中使用Scanner类实现数据输入十分简单方便,Scanner类中next()与nextLine()都可以实现字符串String的获取,所以我们会纠结二者之间的区别. 其实next()与nex ...
- 使用ajax上传文件
1. XMLHttpRequest(原生ajax) [](javascript:void(0) <input class="file" type="file&quo ...
- Docker的数据管理、网络通信和dockerfile
Docker的数据管理.网络通信和dockerfile 目录 Docker的数据管理.网络通信和dockerfile 一.Docker的数据管理 1. 数据卷 1.1 数据卷定义 1.2 数据卷配置 ...
- 基于人工智能标记语言 (AIML)和任务型对话系统(Task)的深度智能对话机器人demo
起因 本demo基于基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型而来 无意间发现一个基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型,但 ...
- Java多线程经典案例分享
汇总 案例一 案例二 案例三 案例四 案例五 案例六 案例七 案例一 实现一个容器,提供两个方法,add(),count() 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数 ...
- Spark算子 - aggregate
释义 将每个partition内元素进行聚合,然后将每个partition的聚合结果进行combine,得到最终聚合结果.最终结果允许跟原始RDD类型不同 方法签名如下: def aggregate[ ...
- 年前最后一次2022.1.28_RP++
T1同昨(我看到题目就粘上昨天的代码,结果题还没发我就A了hhhhhh) T2一开始想用深搜,结果T掉了...只好改广搜,就挺令人头大 点击查看宽广对比 #include<bits/stdc++ ...
- 前端框架 bootstrap 的使用
内容概要 前端框架 bootstrap 简介 引入方式 布局容器 栅格系统 图标 内容详细 简介 网址:https://v3.bootcss.com/ 版本: 2.X 3.X 4.X 推荐使用3.X版 ...
- 看我如何使用 shell 来获取所有 KVM 虚拟机的 IP 地址
文章目录 脚本说明 脚本展示 效果展示 此脚本的初衷是因为,KVM创建的桥接网卡的虚拟机,无法使用virsh domifaddr命令获取IP,而创建的nat网卡的虚拟机,则可以直接使用virsh do ...