1.0.7 • Published 4 years ago

vue-el-table-pro v1.0.7

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

vue-el-table-pro npm.io

基于el-table的配置化组件

背景:使用element el-table时,总要书写过多的template模板代码,使得页面html代码过多。从应用层看element组件库,虽然api设计的十分灵活,但使用起来十分繁琐。所以需要对el-table进行包装,简化相关配置。

应用层api设计比较好的,推荐antd-design-vue table,vue-el-table-pro api设计就参考了antd-design-vue table组件,底层渲染依然沿用element-ui table组件。同时全属性/事件支持原element table组件,不会破坏原有的api(无侵入);同时支持slot/jsx/h函数三种方式自定义渲染列数据,实现自定义业务逻辑渲染;同时集成常用的pagination组件以及扩展api,帮助便捷处理常用业务。

在线案例

https://ganp1020.github.io/vue-el-table-pro

特点

  1. 简单的使用方式,只需要data和column两个属性即可支持
  2. 全继承,element-ui全属性/事件继承
  3. 高扩展,支持slot/jsx/h函数三种方式自定义渲染列数据
  4. 更便捷,扩展scroll事件、pagination组件、fn快捷格式化

安装和引入

安装

yarn add vue-el-table-pro

引入

该组件依赖element-ui的el-table组件,需要自行引入。

import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
Vue.use(ElementUI);

import VueElTablePro from 'vue-el-table-pro'
Vue.use(VueElTablePro)

基本使用

<template>
    <vue-el-table-pro
      :data="list"
      :columns="[
        { label: 'ID', value: 'id', width: '80px' },
        { label: '存储卷名', value: 'name' },
        { label: '总容量', value: 'storage', fn: val => `${val}G` },
        { label: '创建人', value: 'member.userId' },
        { label: '邮箱', value: 'member.email' },
        { label: '创建时间', value: 'gmtCreate' }
      ]"
    />
</template>

API

vue-el-table-pro 属性

支持el-table上所有原有属性,同时扩展以下api。

参数类型默认值说明
loadingBooleanfalse动效loading
dataArray[]列表数据
columnsArray[]column item配置列表,详细见如下columns Attrs
paginationObject翻页器配置,默认未设置,不显示翻页器。相关api可查看el-pagination
totalNumber0翻页器条数总数

vue-el-table-pro 事件

支持el-table上所有原有事件,同时扩展以下api。

事件名称说明Description
scrolltable滚动条事件e
page-change翻页器改变事件{ pageSize, currentPage }

columns 属性

支持el-table-column所有原有属性Scoped Slot,同时扩展以下api:

AttrTypeDefaultDescription
labelString列名称
propString列数据字段,支持多层对象嵌套,如user.email.prefix
hiddenBoolean是否隐藏该列。建议是一个computed,使得可以响应式显示隐藏
customRenderFunction自定义列数据渲染。函数参数(value, row, column, $index, h),支持jsx和h函数
customTitleFunction自定义列头部渲染。函数参数(column, $index, h),支持jsx和h函数
scopedSlotsObject使用slot方式自定义渲染,替换customRender/customTitle函数。比如:{ customRender: 'slotName1', customTitle: 'slotName2' }

License

MIT