前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue纯前端分页_基于vue的表格组件

vue纯前端分页_基于vue的表格组件

作者头像
全栈程序员站长
发布2022-11-15 10:55:49
3090
发布2022-11-15 10:55:49
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

之前写了一篇,是简单分页,地址如下

点击打开链接

https://blog.csdn.net/qq_33212500/article/details/80422148

vue 分页组件(比上一版本好看一些),贴代码

代码语言:javascript
复制
vue-page.js

代码如下

代码语言:javascript
复制
var vuePage = {
template:'<div class="page-bar" id="pager">\
<span class="form-inline">\
<select class="form-control" v-model="pagesize" number>\
<option v-for="item in pagerData.page.arrPageSize" :value="item">{
{item}}</option>\
</select>\
</span>\
<span class="btn btn-default" v-on:click="btnClick(1)">首页</span>\
<span class="btn btn-default" v-on:click="btnClick(Number(pageCurrent)-1)">上一页</span>\
<span class="form-inline">第\
<input class="form-control" style="width:60px;text-align:center" v-model="pageCurrent" type="text" v-on:click="getMypageCurrent" v-on:blur="yzPage" v-on:keyup.enter="yzPage();btnClick(pageCurrent)" />\
页</span>\
<span>,共{
{pagerData.page.pages}}页</span>\
<span class="btn btn-default" v-on:click="btnClick(Number(pageCurrent)+1)">下一页</span>\
<span class="btn btn-default" v-on:click="btnClick(pagerData.page.pages)">尾页</span>\
<span>共{
{pagerData.page.total}}条数据</span>\
</div>',
data:function(){
return{
mypagesize:10,
mypageCurrent:1,//当前页
sortparam:"",
sorttype:1
}
},
props: {
pagerData:{
default:function(){
return{
page:{
//分页大小
//pageSize:10,
//分页数
//arrPageSize:[10,20,30,40],
//当前页面
//pageNum:1,
//总分页数
//pages:0,
//记录总数
//total:0
}
}
}
},
callback: {
default: function() {
return function callback() {
// todo
}
}
}
},
methods:{
btnClick:function(page) {
if(page<=0){
page = 1;
}else if(page>this.pagerData.page.pages){
page = this.pagerData.page.pages;
}
this.pagerData.page.pageNum = page;
if (page != this.pagenum) {
this.callback(page)
}
},
yzPage:function(){
if(/^[1-9]\d*$/.test(this.pageCurrent)==false){
this.pageCurrent =this.mypageCurrent;
//this.pagerData.page.pageNum = this.mypageCurrent;
}else{
if((Number(this.pageCurrent)<=0)||(Number(this.pageCurrent)>this.pagerData.page.pages)){
this.pageCurrent =this.mypageCurrent;
//this.pagerData.page.pageNum = this.mypageCurrent;
}
}
},
getMypageCurrent:function(){
this.mypageCurrent = this.pageCurrent;
}
},
computed:{
// 分页大小 获取的时候显示父级传入的,修改的时候修改自身的。子组件不能修改父元素的值
pagesize:{
get:function(){
return this.pagerData.page.pageSize;
},
set:function(value){
this.pagerData.page.pageSize = value;
this.pagerData.page.pageNum = 1;
this.callback(1)
}
},
pageCurrent:{
get:function(){
return this.pagerData.page.pageNum;
},
set:function(value){
this.pagerData.page.pageNum = value;
}
}
}
}

table表单下的代码如下,该代码复制到table标签下即可

代码语言:javascript
复制
<vue-page  v-bind:pager-data="pagerData" :callback="callback"></vue-page>

js代码如下

代码语言:javascript
复制
var vue = new Vue({
el:"#app",
data:{
rsList:[],
pagerData:{
page:{
//分页大小
pageSize:10,
//分页数
arrPageSize:[10,20,30,40,50],
//当前页面
pageNum:1,
//总分页数
pages:0,
//记录总数
total:0
}
}
},
created: function () {
this.callback(1);
},
components:{
'vue-page': vuePage
},
methods:{
callback: function(page){
this.pagerData.page.pageNum = page;
this.globalCurPage = page;
var params = {};
params.pageNum = page;
params.pageSize = this.pagerData.page.pageSize;;
params.receiveStatus = this.receiveStatus;
sysUserController.getMessageList(params,function (data) {
if(data.status==200){
var resultObject = data.resultObject;
vue.rsList = resultObject.list;
vue.pagerData.page.pages = resultObject.pages;
vue.pagerData.page.total = resultObject.total;
}
});
}
}
});

需引入

代码语言:javascript
复制
bootstrap.min.css

样式完成!

页面效果如下

vue纯前端分页_基于vue的表格组件
vue纯前端分页_基于vue的表格组件

======================================

源码地址:https://download.csdn.net/download/qq_33212500/10433011

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187229.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月1日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档