在web开发过程中,通常使用表格展示数据,在数据较多时采用分页的方式展示给用户。

分页方式有前端假分页和后端分页两种实现方式,此文仅记录前端假分页实现方式。

第一步:添加分页组件(el-pagination)在表格下方,添加的代码如下所示:

<template>
<el-table>
...
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[15, 30, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="currentTotal">
</el-pagination>
</template> <script>
...
</script>

第二步:添加分页所需的变量,如下所示:

<script>
export default {
methods: {
...
},
data() {
return {
currentPage: 1,
pageSize: 30,
currentTotal: 0, tableData: []
}
}
}
</script>

第三步:添加相应的分页方法,如下所示:

<script>
export default {
methods: {
handleSizeChange(val) {
this.pageSize = val;
console.log(`每页 ${val} 条`);
},
handleCurrentChange(val) {
this.currentPage = val;
console.log(`当前页: ${val}`);
}
},
data() {
return {
currentPage: 1,
pageSize: 30,
currentTotal: 0, tableData: []
}
}
}
</script>

第四步:修改查询按钮逻辑,在成功查询后,更新数据的总数量。代码如下所示:

<script>
import {ServFindAllByConditions} from '@/service/database'
export default {
methods: {
handleBtnQuery(query) {
if (query.env === "") {
this.$message({
message: '请选择查询环境',
type: 'warning'
});
return;
} ServFindAllByConditions(query).then(res => {
this.tableData = res.data;
this.currentTotal = this.tableData.length;
this.$message({
message: res.msg,
type: res.code == 200 ? 'success' : 'warning'
});
})
.catch(err => {
console.log(err)
})
},
handleSizeChange(val) {
this.pageSize = val;
console.log(`每页 ${val} 条`);
},
handleCurrentChange(val) {
this.currentPage = val;
console.log(`当前页: ${val}`);
}
},
data() {
return {
currentPage: 1,
pageSize: 30,
currentTotal: 0, tableData: []
}
}
}
</script>

第五步:使用slice实现前端的假分页,最终vue文件中的主要代码如下所示:

<template>
<d2-container>
<el-form :model="query" :inline="true">
<el-form-item label="英文简称:">
<el-input v-model="query.eng" placeholder="请输入英文简称..." clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="handleBtnQuery(query)" type="primary" icon="el-icon-search">搜索</el-button>
</el-form-item>
</el-form> <el-table
:data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
hight="250"
border
stripe
max-height="650"
style="width: 100%">
<el-table-column fixed type="index" width="50"></el-table-column>
<!--<el-table-column prop="id" label="系统主键" width="100"></el-table-column>-->
...
...
<el-table-column label="访问链接" width="400" show-overflow-tooltip>
<template slot-scope="scope">
<a :href="scope.row.url" target="_blank" class="buttonText">{{scope.row.url}}</a>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[15, 30, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="currentTotal">
</el-pagination>
</template> <script>
import {ServFindAllByConditions} from '@/service/database'
export default {
methods: {
handleBtnQuery(query) {
if (query.env === "") {
this.$message({
message: '请选择查询环境',
type: 'warning'
});
return;
} ServFindAllByConditions(query).then(res => {
this.tableData = res.data;
this.currentTotal = this.tableData.length;
this.$message({
message: res.msg,
type: res.code == 200 ? 'success' : 'warning'
});
})
.catch(err => {
console.log(err)
})
},
handleSizeChange(val) {
this.pageSize = val;
console.log(`每页 ${val} 条`);
},
handleCurrentChange(val) {
this.currentPage = val;
console.log(`当前页: ${val}`);
}
},
data() {
return {
currentPage: 1,
pageSize: 30,
currentTotal: 0, tableData: []
}
}
}
</script>

最终效果如下所示:

VUE-002-前端分页(el-pagination)展示数据的更多相关文章

  1. Jquery前端分页插件pagination同步加载和异步加载

    上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...

  2. 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储

    在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...

  3. 前端分页插件pagination

    摘要: 最近在开发项目中又用到了前端分页,以前也做过,为了方便以后使用所以将他封装成第三方插件,不依赖任何库.网上已经有很多插件,问什么还要自己造轮子? 自己写的扩展性高 不依赖任何库 作为一次技术沉 ...

  4. Jquery前端分页插件pagination使用

    插件描述:JqueryPagination是一个轻量级的jquery分页插件.只需几个简单的配置就可以生成分页控件.并且支持ajax获取数据,自定义请求参数,提供多种方法,事件和回调函数,功能全面的分 ...

  5. 基于vue2.0实现仿百度前端分页效果(二)

    前言 上篇文章中,已经使用vue实现前端分页效果,这篇文章我们单独将分页抽离出来实现一个分页组件 先看实现效果图 代码实现 按照惯例,我们在冻手实现的时候还是先想一想vue实现组件的思路 1.需要提前 ...

  6. 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理

    在我们很多模块里面,都需要使用到一些诸如图片.Excel文件.PDF文件等附件的管理,一般我们倾向于把它独立为一个公用的附件管理模块,这样可以有效的统一管理附件的信息.本篇随笔介绍附件内容的管理,包括 ...

  7. Repeater控件 ---表格展示数据

    简介: Repeater控件是Web 服务器控件中的一个容器控件,它使您可以从页的任何可用数据中创建出自定义列表. Repeater 控件不具备内置的呈现功能,这表示用户必须通过创建模板为 Repea ...

  8. Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能

    Django架构中自带了后端分页的技术,通过Paginator进行分页,前端点击按钮提交后台进行页面切换. 优缺点:后端分页对于数据量大的场景有其优势,但页面切换比较慢. 后端分页python3代码如 ...

  9. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:使用BootstrapPagination以分页形式展示数据信息

    上一篇介绍通过接口来获取数据,本篇将介绍如何以分页形式展示出接口获取到的数据 获取到的数据往往会很多,为了追去页面的美观和方便用户的检索,需要进行分页的展示: EasyNVR可接如多通道,当我们的通道 ...

  10. EasyNVR摄像机网页无插件直播方案H5前端构建之:使用BootstrapPagination以分页形式展示数据信息

    背景介绍 EasyNVR核心在于摄像机的音视频流的获取.转换.转码与高性能分发,同时同步完成对实时直播流的录像存储,在客户端(PC浏览器.Android.iOS.微信)进行录像文件的检索.回放和下载. ...

随机推荐

  1. 【原创】Linux基础之后台运行

    linux服务器通常都是远程登录的,执行命令或者脚本时,如果连接断掉(执行时间较长或者网络不稳定时),那么进程也就没了,这时只能重新连接重新执行,这时可以使用后台执行: 1 nohup 命令 nohu ...

  2. Visual studio 编辑combobox程序卡死的问题

    问题描述:使用vs2017开发一个winform小程序,一用combobox就卡死. 问题解决:关闭有道词典的取词功能. 软件开多了,就容易有冲突啊!

  3. ES6 语法学习(一)

    1.let 和 const 关键字 let 与 var 的区别有: a.let 声明的变量只在当前的块级作用域内有效(块级作用域通俗的话就是被{}包裹起来的区域声明对象的{}例外). b.let 声明 ...

  4. 【C++ Primer | 09】容器适配器

    一.stack s.push(): 向栈内压入一个成员: s.pop(): 从栈顶弹出一个成员: s.empty(): 如果栈为空返回true,否则返回false: s.top(): 返回栈顶,但不删 ...

  5. docker部署项目 <三>

    使用docker运行一个控制台项目,新建一个控制台测试项目 一.安装mono,直接在网易镜像中心找下载路径 docker pull hub.c..com/library/mono:latest 二.安 ...

  6. 根据token分割字串

    #include <iostream> #include <string> #include <cstring> int main() { const char * ...

  7. tensorflow建造神经网络-【老鱼学tensorflow】

    上次我们添加了一个add_layer函数,这次就要创建一个神经网络来预测/拟合相应的数据. 下面我们先来创建一下虚拟的数据,这个数据为二次曲线数据,但同时增加了一些噪点,其图像为: 相应的创建这些伪造 ...

  8. HttpSession与JSESSIONID的"盗用"

    https://blog.csdn.net/qq1437715969/article/details/75331652

  9. XVII Open Cup named after E.V. Pankratiev. GP of Siberia, Division 1

    1. Ski race 枚举枚举倍数判断即可.时间复杂度$O(n\log m)$. #include<cstdio> #include<algorithm> using nam ...

  10. 03_ if 练习 _ little2big

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...