2.1.0 • Published 2 years ago

element-datatables v2.1.0

Weekly downloads
56
License
-
Repository
-
Last release
2 years ago

ele-data-tables

一个基于element-ui 的表格组件,该组件封装了Ajax请求和分页,最初的灵感来自于DataTables,在项目中经过实践,有个这个组件的雏形.

  • 需要手动引入axios,element-ui ,qs
  • 由于axios依赖于Promise,因此如果要在IE9/IE10/IE11+上使用时,需要导入相应的polyfill,IE9-慎入
    代码中包含一个可运行的实例,通过下面的命令来启动实例
npm i && npm run dev

基本用法

  • 安装相关依赖
npm i -S axios element-ui qs element-datatables
  • 在项目中引入element-ui依赖,具体引入方式参见http://element.eleme.io.
    你需要在你的入口文件中引入element相关的css文件.
  • 通过以下两种方式之一展示数据
    • 通过ajax获取数据
<template>
    <div id="app">
        <h1>ele-data-tables</h1>
        <ele-data-tables ajax="/users" ref="renovate">
            <el-table-column prop="id" label="ID" align="center" />
            <el-table-column prop="name" label="姓名" />
            <el-table-column label="操作">
                <template slot-scope="scope">
                    <a style="margin-right: 10px;cursor: pointer" @click="op(scope.row)" class="link">操作</a>
                </template>
            </el-table-column>
        </ele-data-tables>
    </div>
</template>
<script>
    import EleDataTables from 'element-datatables'
    import { TableColumn as ElTableColumn } from 'element-ui'

    export default {
        components: {
            EleDataTables,
            ElTableColumn
        },
        data () {
        },
        methods: {
            op (value) {
                alert('你点击了' + JSON.stringify(value))
            }
        }
    }
</script>
  • 通过设置data属性获取数据
<template>
    <div id="app">
        <h1>ele-data-tables</h1>
        <ele-data-tables :data="users" ref="renovate">
            <el-table-column prop="id" label="ID" align="center" />
            <el-table-column prop="name" label="姓名" />
            <el-table-column label="操作">
                <template slot-scope="scope">
                    <a style="margin-right: 10px;cursor: pointer" @click="op(scope.row)" class="link">操作</a>
                </template>
            </el-table-column>
        </ele-data-tables>
    </div>
</template>
<script>
    import EleDataTables from 'element-datatables'
    import { TableColumn as ElTableColumn } from 'element-ui'

    export default {
        components: {
            EleDataTables,
            ElTableColumn
        },
        data () {
            users: [{
                id: 1,
                name: '张三'
            }, {
                id: 2,
                name: '李四'
            }, {
                id: 3,
                name: '王五'
            }]
        },
        methods: {
            op (value) {
                alert('你点击了' + JSON.stringify(value))
            }
        }
    }
</script>

有关el-table-column使用方法,请参考element-ui相关说明

其它table的高级功能

如果你要使用element table中的其它高级功能。请使用slot方式插入到表格中。

简介

element-datatable支持两种模式的数据显示,一是ajax服务模式,二是data的本地数据模式.当我们设置组件的data属性时,会启用本地数据模式,否则会启用服务器模式.本组件的主要功能是服务器端模式,通过少量的代码,实现较为复杂的服务器分页查询等逻辑.

服务器模式

当我们没有设置data的时候,组件启用服务器模式,我们可以通过设置服务器相关的参数来和从服务器获取数据.

与服务器相关的属性

  • ajax: 表示发送到服务器的请求,可以是一个字符串或者是一个完整的ajax对象.如果是一个字符串,则会向字符串指定的地址发送get请求以获取数据.本组件使用axios发送ajax请求,相关的ajax对象与axios 的config相同
  • server-params: 表示作为发送到服务器的附加参数,如果ajax请求的类型为get,则会将附件参数作为params发送到服务器,其它类型的请求会将数据作为data发送到服务器.

发送到服务器的参数

这几个查询参数:包括{draw,page,size},将始终通过params的方式发送到服务器.

  • draw: 请求标记,服务器应该原样返回该数据
  • page: 从0开始的分页号
  • size: 每页长度
  • server-params属性,在get请求时,会作为params发送到服务器,其它请求时会作为data发送到服务器
    一个示例地址:get http://localhost/users?draw=0&page=0&size=10&keywords=good

服务器响应

为了正确展示数据,服务器必须按照一定的规则响应数据,组件需要如下响应才能正常工作

{
  "draw"
:
  Number, // 服务器应当原样返回该标记,主要是做请求响应适配
    "success"
:
  Boolean, // 服务器是否正确的响应了查询
    "recordsTotal"
:
  Number, // 数据总量
    "error"
:
  String, // 错误信息,当success===true时,通常需要提供该信息,该信息会展示在表格中
    "data"
:
  Array //如果success===false,不需要该信息
}

以下是一个响应示例

{
  "draw": 1,
  "success": true,
  "recordsTotal": 100,
  "data": [
    {
      "id": 1,
      "name": "张三"
    },
    {
      "id": 2,
      "name": "李四"
    },
    {
      "id": 3,
      "name": "王五"
    }
  ]
}

数据过滤

当server-params改变时,会向服务器发送查询请求,并重新获取数据

本地数据

我们可以通过直接设置data属性来设置显示本地数据

ele-data-tables属性说明

|属性名称|属性类型|属性描述| | :- | :- | :- | |ajax|String/Object|后台服务器地址/完整的ajax对象| |server-params|Object|发送到服务器的查询参数| |data|Array|静态数组|

ele-data-tables实例方法

可供外部调用的实例方法有

  • $refs.table.reloadData() 根据当前的信息重新载入数据
  • 其它的实例方法不建议使用

更新历史

  • 2.1.0 更新一些数据逻辑,使用vue-datalist V1.1.2作为数据底层组件,修改一些bug
  • 2.0.15 添加一些element原始表格的方法到表格中
  • 2.0.14 对外$emit一些底层事件
  • 2.0.12 修改一个底层数据加载模块的错误
  • 2.0.10 增加加载loading框
  • 2.0.9 添加默认分页组件对齐方式的属性
  • 2.0.7 修改分页条默认的内容类型,并且添加layout属性,可以通过layout配置分页条的内容
  • 2.0.6 修改项目的发布方式为umd,解决不能正确被vue-cli识别的bug
  • 2.0.5 增加字符串为默认排序设置的功能
  • 2.0.4 修改表格排序不正常的bug
  • 2.0.3 修复一个不能排序的bug
  • 2.0.2 修复一个row-click事件异常的bug
  • 2.0.x 一个全新的版本。
  • 1.0.8 添加一个name=table插槽,使得前端可以自定义表格内容
  • 1.0.7 重新修改插件模式和typescript定义文件
  • 1.0.4 重新构建打包配置,使用webpack打包成commonjs2的模块发布到npm
  • 1.0.3 增加类型声明文件
  • 1.0.2 加入防抖属性debounceTime,实现输入防抖
  • 1.0.0 去掉0.X版本老旧数据格式的依赖,
  • 0.3.3
    修正了一个在新版本的响应体下,返回>1的页面没有数据时,不自动刷新到上一页的bug
  • 0.3.1
    修正了表格多次请求之后,数据不匹配的bug
  • 0.3.0 更新了数据请求的方式,现在不会再强制要求后台处理draw参数,支持处理后台返回的Spring Data 的Page<?>类型数据。
  • 0.2.6
    当使用ajax加载数据时,如果指定页面没有数据,而数据总条目不位0时,则会自动重新加载上一页的数据,递归引用,直至加载到数据
  • 0.2.5
    修正了自定义服务器参数时,sort不能正确传输到后台的bug
  • 0.2.4
    修正了一个多次点击表头排序,会导致传入后台的参数丢失的问题
  • 0.1.7 功能,增加表头排序
  • 0.1.3 修正:当请求参数改变时,会回第一页了
  • 0.1.1 修正了一个引入element相关组件,在某些工程中编译报错的bug
  • 0.1.0 修正了一个切换每页长度后,表格不能正常刷新的bug,基本趋于稳定的一个版本了
  • 0.0.6 修改依赖包的引入方式,修改IE兼容性问题
  • 0.0.5
    修改了显示加载动画的问题, 增加了一个选项,用于控制是否显示加载对话框
  • 0.0.4 修改说明文件,修改说明示例, 修改发布脚本 增加事件响应 增加分页项目配置
  • 0.0.1-0.0.3 初始版本
2.0.15

2 years ago

2.0.14

2 years ago

2.1.0

2 years ago

2.0.13

2 years ago

2.0.11

3 years ago

2.0.12

3 years ago

2.0.10

3 years ago

2.0.9

3 years ago

2.0.8

3 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.5

3 years ago

2.0.3

3 years ago

2.0.4

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0-beta9

3 years ago

2.0.0-beta7

3 years ago

2.0.0-beta8

3 years ago

1.0.0-beta1

3 years ago

2.0.0-beta6

3 years ago

2.0.0-beta5

3 years ago

2.0.0-beta3

3 years ago

2.0.0-beta4

3 years ago

2.0.0-beta2

3 years ago

2.0.0-beta1

3 years ago

1.0.8

3 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.9

6 years ago

0.0.8

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago