iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >Vue+Element UI+Lumen如何实现通用表格分页功能
  • 627
分享到

Vue+Element UI+Lumen如何实现通用表格分页功能

2024-04-02 19:04:59 627人浏览 安东尼
摘要

这篇文章主要为大家展示了“Vue+Element UI+Lumen如何实现通用表格分页功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue+Element

这篇文章主要为大家展示了“Vue+Element UI+Lumen如何实现通用表格分页功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue+Element UI+Lumen如何实现通用表格分页功能”这篇文章吧。

先说后端

后端做的事情不多,只需要接受几个参数,根据参数来获取数据即可。

需要获取的参数如下:

  • pageSize(一页数据的数量)

  • pageIndex(第几页的数据)

然后就可以根据这两个参数计算出偏移量,再从数据库中取出相应的数据。

假如现在给出的参数为:pageSize=10pageIndex = 2,也就是说每一页要10条记录,要第二页。

计算偏移量的公式为:pageSize * (pageIndex - 1)

基本代码如下:

public function getUser(Request $request){
 $pageSize = $request->input('pageSize');
 $pageIndex = $request->input('pageIndex');
 $offset = $pageSize * ($pageIndex - 1);
 return User::offset($offset)
    ->limit($pageSize)
    ->get();
}

后端基本上只需要做这么多,就可以完成一个分页的功能了,但还是有几处地方需要改进一下:

  • 给参数一个默认值

  • 前端还需要知道整个表的数据的总数

  • 把分页做成一个公用的函数

改进后的代码如下:

private $default_page_size = 30;
private $default_page_index = 1;

// 公用分页
public function pagination($request, $list) {
 $pageSize = $request->input('pageSize', $this->default_page_size);
 $pageIndex = $request->input('pageIndex', $this->default_page_index);
 $offset = $pageSize * ($pageIndex - 1);
 $total = $list->count();
 $list = $list
   ->offset($offset)
   ->limit($pageSize);
 return [
 'list' => $list->get(),
 'total' => $total,
 ];
}

// 获取用户列表
public function getUser(Request $request) {
 $list = User::query();
 
 return $this->pagination($request, $list);
}

再说前端

前端相对于需要做的事情就比较多了,需要考虑几点:

  • 获取数据时需要带上分页的参数

  • 分页参数需要进行本地持久化,以免刷新页面回到第一页(后端设置的默认值)

  • 同样要抽象出一个通用的分页组件

获取数据

这里我们用 vuex来管理状态,然后在请求时带上分页数据:

store.js

注意:

  • 这里为了方便展示代码,并没有使用模块化,项目中,最好将使用模块化方便管理。

  • 这里默认读者清楚 es6 的语法

export default new vuex.Store({
 state : {
  user : {
   list: [],
   total: 0,
   pageIndex: 1,
   pageSize: 10,
  }
 },
 mutations: {
 updateUser(state, data) {
 state.user = {
 ...state.user,
 ...data,
 }
 }, 
 },
 actions: {
  async getUser({commit,state,getters}) {
   // $axiOS 只是我自己封装的一个函数 这里并不重要
   const res = await $axios.get('/user',getters.requestData(state.user))
   commit('updateUser',res);
  },
 },
 getters:{
  requestData(state) {
   return (origin) => {
    const {
     pageIndex,
     pageSize,
    } = origin;
    const data = {
     pageIndex,
     pageSize,
    };
    return data;
   }
  },
 }
})

数据持久化

现在如何获取数据已经搞定了,数据持久化我使用 vuex-localstorage,安装后,只需要在上面代码的基础上添加:

import createPersist from 'vuex-localstorage'
export default new vuex.Store({
 // 接着上面的
 plugins: [createPersist({
  namespace: 'studio-user',
  initialState: {},
  // ONE_WEEK
  expires: 7 * 24 * 60 * 60 * 1e3
 })]
})

公用分页组件

<template>
 <el-Pagination
 background
 layout="total, sizes, prev, pager, next, jumper"
 :total="module.total"
 :current-page.sync="module.pageIndex"
 :page-sizes="module.pageSizes"
 :page-size.sync="module.pageSize"
 @current-change="handleCurrentChange"
 @size-change="handleSizeChange"
 >
 </el-Pagination>
</template>
<script>
export default {
 props: {
 module: Object
 },
 methods: {
 getData() {
  this.$emit("get-data");
 },
 handleCurrentChange() {
  this.getData();
 },
 handleSizeChange(val) {
  this.getData();
 }
 }
};
</script>

使用分页组件

<template>
 <div class="container">
 <el-table
  :data="user.list"
  
  >
  <el-table-column
   v-for="(item,index) in columns"
   :key="index"
   :prop="item.prop"
   :label="item.label"
   align="center"
  />
  </el-table>
  <pagination
  :module="user"
  @get-data="getData"
  />
 </div>
</template>
<script>
import Pagination from "@/common/components/Pagination";
import { mapActions, mapState } from "vuex";
export default {
 components: {
 Pagination,
 },
 data: () => ({
 columns: [
  {
  prop: "name",
  label: "姓名"
  },
  {
  prop: "性别",
  label: "sex"
  },
  {
  prop: "年龄",
  label: "age"
  },
 ]
 }),
 created() {
 this.getData();
 },
 methods: {
  ...mapActions({
   getData : "getUser",
  }) 
 },
 computed: {
 ...mapState(["user"])
 }
};
</script>

以上是“Vue+Element UI+Lumen如何实现通用表格分页功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: Vue+Element UI+Lumen如何实现通用表格分页功能

本文链接: https://www.lsjlt.com/news/72442.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+Element UI+Lumen如何实现通用表格分页功能
    这篇文章主要为大家展示了“Vue+Element UI+Lumen如何实现通用表格分页功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue+Element ...
    99+
    2024-04-02
  • vue+element-ui+sortable.js实现表格拖拽功能
    本文实例为大家分享了vue+element-ui+sortable.js实现表格拖拽的具体代码,供大家参考,具体内容如下 效果如下: 1.vue使用cli创建项目就不说了,本人使用...
    99+
    2024-04-02
  • element ui表格如何实现下拉筛选功能
    这篇文章主要讲解了“element ui表格如何实现下拉筛选功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“element ui表格如何实现下拉筛选功能”吧!default-sort中pr...
    99+
    2023-06-25
  • vue实现表格分页功能
    本文实例为大家分享了vue实现表格分页功能的具体代码,供大家参考,具体内容如下 直接上代码: 这里是这里是template部分,主要由一个需要分页的表格和一个分页器组成。重点在于表格...
    99+
    2024-04-02
  • element ui表格实现下拉筛选功能
    本文实例为大家分享了element ui表格实现下拉筛选的具体代码,供大家参考,具体内容如下 1、default-sort中prop传入要排序的字段(接口返回或自己定义的数据)、or...
    99+
    2024-04-02
  • vue中如何实现element-ui表格缩略图悬浮放大功能
    这篇文章给大家分享的是有关vue中如何实现element-ui表格缩略图悬浮放大功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。element-ui界面非常简洁和美观,提供的组...
    99+
    2024-04-02
  • Vue element-ui表格内嵌进度条功能实现方法
    目录一、引言二、方法三、实验结果与讨论1.前期准备工作2.实现功能3完整实验代码四、结语一、引言 在着手做项目时,尤其是后台管理系统类的项目,不难会遇到,数据用进度条的形式呈现,可视...
    99+
    2024-04-02
  • vue + element-ui如何实现导入导出功能
    小编给大家分享一下vue + element-ui如何实现导入导出功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言众所周知...
    99+
    2024-04-02
  • vue如何实现表格分页
    Vue可以通过以下步骤来实现表格分页:1. 在Vue组件中定义一个表格数据数组,例如`tableData`,用于存储所有的表格数据。...
    99+
    2023-08-09
    vue
  • element-ui表格如何实现单元格可编辑
    这篇文章主要介绍element-ui表格如何实现单元格可编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如下所示:<template>  <el-tab...
    99+
    2024-04-02
  • Vue使用Element-UI实现分页效果全过程
    目录前言技术选项:Pagination增加分页代码初始化数据回调函数指定table分页查看效果总结前言 分页在展示数据列表的场景肯定是非常多的。 一般的项目开发中,数据量特别大,一般...
    99+
    2023-05-18
    element-ui实现分页 elementui分页查询 elementui 分页
  • Vue Element-ui如何实现表单校验规则
    本篇内容介绍了“Vue Element-ui如何实现表单校验规则”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言规则校验的入门模式1、...
    99+
    2023-06-20
  • 利用Vue模拟实现element-ui的分页器效果
    目录1. 思路1.1客户端1.2服务器2.服务器2.1创建数据2.2创建接口3.客户端3.1创建静态页面3.2请求数据3.3解析逻辑4.总结1. 思路 1.1客户端 利用vue相关的...
    99+
    2022-11-13
    Vue element-ui分页器 Vue element-ui分页 Vue element-ui
  • vue iview如何实现分页功能
    本篇内容介绍了“vue iview如何实现分页功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!子组件<template&g...
    99+
    2023-07-02
  • 如何实现element ui分页多选和翻页记忆
    这篇文章将为大家详细讲解有关如何实现element ui分页多选和翻页记忆,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先说需求:实时记录当前选中的分页中的列表,分页保存...
    99+
    2024-04-02
  • Vue2.0+ElementUI如何实现表格翻页功能
    这篇文章主要介绍Vue2.0+ElementUI如何实现表格翻页功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Element UI 是一套采用 Vue 2.0 作为基础框架实现的...
    99+
    2024-04-02
  • Vue2.0+ElementUI+PageHelper实现的表格分页功能
    前言 最近做了一些前端的项目,要对表格进行一些分页显示。表格分页的方法有很多,从宏观上来说分为物理分页和逻辑分页,由于逻辑分页(即前端分页)的做法是将数据全部缓存,然后分页显示,这样...
    99+
    2024-04-02
  • 使用vue+element ui实现走马灯切换预览表格数据
    目录1. 需求分析2. 效果演示3. 代码实现3.1 table.json3.2 HTML 代码3.3 Script 代码总结1. 需求分析 有这样一个 json 文件(table....
    99+
    2022-11-13
    vue element ui 动态表格 element ui 动态表格 element ui表格自定义展示
  • vue+element-ui前端怎么使用print-js实现打印功能
    本文小编为大家详细介绍“vue+element-ui前端怎么使用print-js实现打印功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue+element-ui前端怎么使用print-js实现打印功能”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-07-04
  • vue如何实现一个分页组功能
    这篇“vue如何实现一个分页组功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue如何实现一个分页组功能”文章吧。文件的...
    99+
    2023-07-04
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作