element-ui 实现表格分页

需要用到element组件:table表格和Pagination 分页

官网地址:Element - The world's most popular Vue UI framework

1.首先:安装element-ui

npm i element-ui -S //终端运行

2.引用element-ui

引用分为按需引用和全部引用(建议按需引用)

2.1全部引用
//全部引用 main.js里添加代码

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.use(ElementUI);

new Vue({
  el: '#app',
  render: h => h(App)
});
2.2按需引用

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

安装 babel-plugin-component

npm install babel-plugin-component -D
//修改  .babelrc 文件

{
  "presets": [["es2015", { "modules": false }]],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}
//示例 引用button和select

import Vue from 'vue';
import { Button, Select } from 'element-ui';
import App from './App.vue';

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* 或写为
 * Vue.use(Button)
 * Vue.use(Select)
 */

new Vue({
  el: '#app',
  render: h => h(App)
});

3.前端表格代码

<template>
    <div class="home">
        <el-table :data="tableData" stripe style="width: 100%">
            <el-table-column prop="date" label="日期" width="180">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="address" label="地址"> </el-table-column>
        </el-table>
    </div>
</template>

<script>

export default {
    name: '',
    data() {
        return {
            tableData: [
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1518 弄'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1517 弄'
                },
                {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1519 弄'
                },
                {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市普陀区金沙江路 1516 弄'
                }
            ]
        }
    },
    components: {}
}
</script>

运行后

4.接下来分页

添加以下代码

<el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage4"
      :page-sizes="[100, 200, 300, 400]"
      :page-size="100"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400">
</el-pagination>

:current-page的值表示当前是第几页;
:page-sizes的值表示可以选择一页多少条;
:page-size的值表示当前一页显示几条;
layout的值表示分页需要显示的内容,例如“total” 表示总数、“next” 表示下一页等;
:total的值表示总共有多少条数据;

关于方法

 methods: {
      handleSizeChange(val) {
        console.log(`每页 ${val} 条`);
      },
      handleCurrentChange(val) {
        console.log(`当前页: ${val}`);
      }
    },

样式什么的  自己可以根据自己审美进行调整 调整不过来就在前边加/deep/ 深度修改或者加 "::deep"

你可以使用 element-ui 中的 `el-pagination` 组件进行分页查询的实现。 首先,需要在页面中导入 `el-pagination` 组件和相关的样式文件: ```html <template> <div> <!-- 分页列表 --> <el-pagination :page-size="pageSize" :current-page="currentPage" :total="total" @current-change="handleCurrentChange" layout="total, sizes, prev, pager, next, jumper" /> <!-- 表格内容 --> <el-table :data="tableData" style="width: 100%" > <!-- 表头 --> <el-table-column prop="name" label="姓名" /> <el-table-column prop="age" label="年龄" /> <el-table-column prop="gender" label="性别" /> </el-table> </div> </template> <script> import { reactive, watch } from 'vue' import { ElTable, ElTableColumn, ElPagination } from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' export default { components: { ElTable, ElTableColumn, ElPagination }, setup() { // 响应式数据 const state = reactive({ tableData: [], // 表格数据 total: 0, // 总记录数 currentPage: 1, // 当前页码 pageSize: 10 // 每页显示数量 }) // 监听分页数据变化 watch([() => state.currentPage, () => state.pageSize], ([currentPage, pageSize]) => { // 根据当前页码和每页显示数量进行查询 fetchData(currentPage, pageSize) }) // 查询数据方法 const fetchData = (page, size) => { // 发送请求获取数据 // ... // 更新响应式数据 state.tableData = [/* ... */] state.total = 100 // 假设总记录数为100条 } // 处理页码变化事件 const handleCurrentChange = (currentPage) => { state.currentPage = currentPage } return { ...state, fetchData, handleCurrentChange } } } </script> ``` 在上面的代码中,我们使用了 `reactive` 函数创建了一个响应式的 `state` 对象,其中包含了表格数据、总记录数、当前页码和每页显示数量等数据。在 `watch` 函数中监听了当前页码和每页显示数量的变化,并在变化时触发 `fetchData` 方法进行数据查询。 在模板中,我们使用了 `el-pagination` 组件和 `el-table` 组件来构建分页查询列表。在 `el-pagination` 组件中,我们通过绑定 `pageSize`、`currentPage` 和 `total` 等属性来实现分页功能,并通过 `layout` 属性来配置分页组件的显示方式。在 `el-table` 组件中,我们使用了 `prop` 和 `label` 属性来定义表格的列信息,并通过 `:data` 属性来绑定表格的数据源。 最后,在 `setup` 函数中,我们定义了 `fetchData` 方法和 `handleCurrentChange` 方法来处理数据查询和页码变化事件,并将这两个方法返回给模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值