1.前端后台管理会存在很多表格,表格数据过多就需要分页;
2.前端交互每次搜索如果都请求服务器会加大服务器的压力,所以在数据量不是很大的情况下可以一次性将数据返回,前端做检索
3.下面贴上一个demo



  1. <template>
  2. <div>
  3. <el-input v-model="tableDataName" placeholder="请输入姓名" style="width:240px"></el-input>
  4. <el-button type="primary" @click="doFilter">搜索</el-button>
  5. <el-button type="primary" @click="openData">展示数据</el-button>
  6. <el-table
  7. :data="tableDataEnd"
  8. border
  9. style="width: 100%">
  10. <el-table-column
  11. prop="date"
  12. label="日期"
  13. width="180">
  14. </el-table-column>
  15. <el-table-column
  16. prop="name"
  17. label="姓名"
  18. width="180">
  19. </el-table-column>
  20. <el-table-column
  21. prop="address"
  22. label="地址">
  23. </el-table-column>
  24. </el-table>
  25. <el-pagination
  26. @size-change="handleSizeChange"
  27. @current-change="handleCurrentChange"
  28. :current-page="currentPage"
  29. :page-sizes="[1, 2, 3, 4]"
  30. :page-size="pageSize"
  31. layout="total, sizes, prev, pager, next, jumper"
  32. :total="totalItems">
  33. </el-pagination>
  34. </div>
  35. </template>
  36. <script>
  37. export default {
  38. data() {
  39. return {
  40. tableDataBegin: [
  41. {
  42. date: "2016-05-01",
  43. name: "王小虎",
  44. address: "上海市普陀区金沙江路 1518 弄"
  45. },
  46. {
  47. date: "2016-05-02",
  48. name: "王小虎",
  49. address: "上海市普陀区金沙江路 1517 弄"
  50. },
  51. {
  52. date: "2016-05-03",
  53. name: "王二虎",
  54. address: "上海市普陀区金沙江路 1519 弄"
  55. },
  56. {
  57. date: "2016-05-04",
  58. name: "王二虎",
  59. address: "上海市普陀区金沙江路 1516 弄"
  60. },
  61. {
  62. date: "2016-05-05",
  63. name: "王三虎",
  64. address: "上海市普陀区金沙江路 1518 弄"
  65. },
  66. {
  67. date: "2016-05-06",
  68. name: "王三虎",
  69. address: "上海市普陀区金沙江路 1517 弄"
  70. },
  71. {
  72. date: "2016-05-07",
  73. name: "王小虎",
  74. address: "上海市普陀区金沙江路 1519 弄"
  75. },
  76. {
  77. date: "2016-05-08",
  78. name: "王小虎",
  79. address: "上海市普陀区金沙江路 1516 弄"
  80. }
  81. ],
  82. tableDataName: "",
  83. tableDataEnd: [],
  84. currentPage: 4,
  85. pageSize: 2,
  86. totalItems: 0,
  87. filterTableDataEnd:[],
  88. flag:false
  89. };
  90. },
  91. created() {
  92. this.totalItems = this.tableDataBegin.length;
  93. if (this.totalItems > this.pageSize) {
  94. for (let index = 0; index < this.pageSize; index++) {
  95. this.tableDataEnd.push(this.tableDataBegin[index]);
  96. }
  97. } else {
  98. this.tableDataEnd = this.tableDataBegin;
  99. }
  100. },
  101. methods: {
  102. //前端搜索功能需要区分是否检索,因为对应的字段的索引不同
  103. //用两个变量接收currentChangePage函数的参数
  104. doFilter() {
  105. if (this.tableDataName == "") {
  106. this.$message.warning("查询条件不能为空!");
  107. return;
  108. }
  109. this.tableDataEnd = []
  110. //每次手动将数据置空,因为会出现多次点击搜索情况
  111. this.filterTableDataEnd=[]
  112. this.tableDataBegin.forEach((value, index) => {
  113. if(value.name){
  114. if(value.name.indexOf(this.tableDataName)>=0){
  115. this.filterTableDataEnd.push(value)
  116. }
  117. }
  118. });
  119. //页面数据改变重新统计数据数量和当前页
  120. this.currentPage=1
  121. this.totalItems=this.filterTableDataEnd.length
  122. //渲染表格,根据值
  123. this.currentChangePage(this.filterTableDataEnd)
  124. //页面初始化数据需要判断是否检索过
  125. this.flag=true
  126. },
  127. openData() {},
  128. handleSizeChange(val) {
  129. console.log(`每页 ${val} 条`);
  130. this.pageSize = val;
  131. this.handleCurrentChange(this.currentPage);
  132. },
  133. handleCurrentChange(val) {
  134. console.log(`当前页: ${val}`);
  135. this.currentPage = val;
  136. //需要判断是否检索
  137. if(!this.flag){
  138. this.currentChangePage(this.tableDataEnd)
  139. }else{
  140. this.currentChangePage(this.filterTableDataEnd)
  141. }
  142. }, //组件自带监控当前页码
  143. currentChangePage(list) {
  144. let from = (this.currentPage - 1) * this.pageSize;
  145. let to = this.currentPage * this.pageSize;
  146. this.tableDataEnd = [];
  147. for (; from < to; from++) {
  148. if (list[from]) {
  149. this.tableDataEnd.push(list[from]);
  150. }
  151. }
  152. }
  153. }
  154. };
  155. </script>

原文地址:https://segmentfault.com/a/1190000012510886

vue+element的表格分页和前端搜索的更多相关文章

  1. Vue + Element UI 实现权限管理系统 前端篇(十二):用户管理模块

    用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口. import axios from '../axios' /* * 用户管理模块 */ // 保存 exp ...

  2. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

  3. 基于Vue.js的表格分页组件

    有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage. 不了解Vue.js的童鞋 ...

  4. Vue.js的表格分页组件

    转自:http://www.cnblogs.com/Leo_wl/p/5522299.html 有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更 ...

  5. vue+ElementUI——表格分页(前端实现方法)

    1.使用ElementUI中的<el-table></el-table>和 <el-pagination></el-pagination>组件来实现 2 ...

  6. Vue + Element UI 实现权限管理系统 前端篇(十四):菜单功能实现

    菜单功能实现 菜单接口封装 菜单管理是一个对菜单树结构的增删改查操作. 提供一个菜单查询接口,查询整颗菜单树形结构. http/modules/menu.js 添加 findMenuTree 接口. ...

  7. Vue + Element UI 实现权限管理系统 前端篇(八):管理应用状态

    使用 Vuex 管理应用状态 1. 引入背景 像先前我们是有导航菜单栏收缩和展开功能的,但是因为组件封装的原因,隐藏按钮在头部组件,而导航菜单在导航菜单组件,这样就涉及到了组件收缩状态的共享问题.收缩 ...

  8. Vue + Element UI 实现权限管理系统 前端篇(四):优化登录流程

    完善登录流程 1. 丰富登录界面 1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮. <template> <el- ...

  9. Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境

    技术基础 开发之前,请先熟悉下面的4个文档 vue.js2.0中文, 优秀的JS框架 vue-router, vue.js 配套路由 vuex,vue.js 应用状态管理库 Element,饿了么提供 ...

随机推荐

  1. ADO.NET之断开数据连接的数据库操作

    在ADO.NET对数据库操作时有两种方式一种时与数据库实时连接,第二种时断开连接的操作. 断开连接的操作使用SqlDataAdapter来实现,我们要把数据库中的表数据加载到winform中的data ...

  2. php报错权限设置

    <?php //禁用错误报告 error_reporting(0); //报告运行时错误 error_reporting(E_ERROR | E_WARNING | E_PARSE); //报告 ...

  3. js验证输入框

    项目开发中,都会有对表单form中的input输入框进行一些限制验证 如: <!DOCTYPE html><html lang="en"> <head ...

  4. linux 杀掉端口

    netstat -apn|grep 8184 tcp        0      0 0.0.0.0:8184            0.0.0.0:*               LISTEN    ...

  5. /etc/rc.d/rc.sysinit

    [root@web02 ~]# ls /etc/rc.d/rc.sysinit /etc/rc.d/rc.sysinit [root@web02 ~]# [root@web02 ~]# ls /etc ...

  6. pandas 4 处理缺失数据nan

    from __future__ import print_function import pandas as pd import numpy as np np.random.seed(1) dates ...

  7. 题解 P2532 【[AHOI2012]树屋阶梯】

    本题运用卡特兰数求解. 卡特兰数有两种表达方式: 1)\(h_i=\sum^{k=0}_{i-1}h_kh_{i-k-1}\) 2)\(h_i=\frac{1}{n+1}C^{n}_{2n}\) 运用 ...

  8. POJ 2607 Fire Station

    Fire Station Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on PKU. Original I ...

  9. 洛谷 P3914 染色计数

    P3914 染色计数 题目描述 有一颗NN个节点的树,节点用1,2,\cdots,N1,2,⋯,N编号.你要给它染色,使得相邻节点的颜色不同.有MM种颜色,用1,2,\cdots,M1,2,⋯,M编号 ...

  10. _stat函数/struct stat 结构体使用笔记

    内容来自互联网,非原创,方便以后查看. 另,关于获取文件信息——_stat函数的使用详见 http://blog.csdn.net/frank_liuxing/article/details/1860 ...