Vue中BootStrap和分页组件 实现分页功能(页码过多时带省略号)

2023-11-03

更新:

其实vue中的分页插件结合上 spring data jpa 使用的效果非常好,使用更加方便:

vue组件中:

                <div class="box-footer no-border">
                    <!-- 分页 -->
                    <el-pagination
                        background
                        @size-change="sizeChange"
                        @current-change="pageChange"
                        :current-page="queryForm.page"
                        :page-sizes="[10, 20, 30, 40]"
                        :page-size="queryForm.size"
                        layout="total, sizes, prev, pager, next, jumper"
                        :total="total">
                    </el-pagination>
                </div>

 

在不能使用vue组件,如一般首页是使用element组件的情况:


  • 首先需要在vue-cli项目中配置bootstrap,jquery
  • 然后新建vue文件,如index.vue,index.vue内容如下:
  • 配置路由即可运行实现。
<template>
   <div class="tTable container body-content">
        <div class="form-group">
            <div class="form-group">
                <div class="page-header">
                    表格
                </div>
                <table class="table table-bordered table-responsive table-striped">
                    <thead>
                    <tr>
                    <th>时间</th>
                    <th>点击数</th>
                    <th>点击数</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr v-for="item in arrayData">
                        <td>{{item.timestamp}}</td>
                        <td>{{item.count}}</td>
                        <td>{{item.count}}</td>
                    </tr>
                    </tbody>
                </table>
                <div class="pager" id="pager">
                    <span class="form-inline">
                        <select class="form-control" v-model="pagesize" v-on:change="showPage(pageCurrent,$event,true)" number>
                            <option value="10">10</option>
                            <option value="20">20</option>
                            <option value="30">30</option>
                            <option value="40">40</option>
                        </select>
                    </span>
                    <span v-for="item in pageCount+1">
                        <span v-if="item==1" class="btn btn-default" v-on:click="showPage(1,$event)" :class="{'disabled':fDisabled}">
                            首页
                        </span>
                        <span v-if="item==1" class="btn btn-default" v-on:click="showPage(pageCurrent-1,$event)" :class="{'disabled':fDisabled}">
                            上一页
                        </span>
                        <span v-if="item==1" class="btn btn-default" v-on:click="showPage(item,$event)">
                            {{item}}
                        </span>
                        <span v-if="item==1&&item<showPagesStart-1" class="btn btn-default disabled">
                            ...
                        </span>
                        <span v-if="item>1&&item<=pageCount-1&&item>=showPagesStart&&item<=showPageEnd&&item<=pageCount" class="btn btn-default" v-on:click="showPage(item,$event)">
                            {{item}}
                        </span>
                        <span v-if="item==pageCount&&item>showPageEnd+1" class="btn btn-default disabled">
                            ...
                        </span>
                        <span v-if="item==pageCount" class="btn btn-default" v-on:click="showPage(item,$event)"  >
                            {{item}}
                        </span>
                        <span v-if="item==pageCount" class="btn btn-default" v-on:click="showPage(pageCurrent+1,$event)" :class="{'disabled':lDisabled}">
                            下一页
                        </span>
                        <span v-if="item==pageCount" class="btn btn-default" v-on:click="showPage(pageCount,$event)" :class="{'disabled':lDisabled}">
                            尾页
                        </span>
                    </span>
                    <span>{{pageCurrent}}/{{pageCount}}</span>
                </div>
            </div>
        </div>
    </div>
 </template>
 <script >
 export default {
   
    data(){
        return{
                 //为第一页或者最后一页时,首页,尾页不能点击
               fDisabled:false,
               lDisabled:false,
                  //总项目数
                totalCount: 200,
                //分页数
                pageCount: 20,
                //当前页面
                pageCurrent: 1,
                //分页大小
                pagesize: 10,
                //显示分页按钮数
                showPages: 11,
                //开始显示的分页按钮
                showPagesStart: 1,
                //结束显示的分页按钮
                showPageEnd: 100,
                //分页数据
                arrayData: []
        }
    },
    methods:{
        showPage(pageIndex, $event, forceRefresh){

            if (pageIndex > 0) {
                if (pageIndex > this.pageCount) {
                    pageIndex = this.pageCount;
                }
                //判断数据是否需要更新
                var currentPageCount = Math.ceil(this.totalCount / this.pagesize);
                if (currentPageCount != this.pageCount) {
                    pageIndex = 1;
                    this.pageCount = currentPageCount;
                }
                else if (this.pageCurrent == pageIndex && currentPageCount == this.pageCount && typeof (forceRefresh) == "undefined") {
                    console.log("not refresh");
                    return;
                }

                //处理分页点中样式
                var buttons = $("#pager").find("span");
                for (var i = 0; i < buttons.length; i++) {
                    if (buttons.eq(i).html() != pageIndex) {
                        buttons.eq(i).removeClass("active");
                    }
                    else {
                        buttons.eq(i).addClass("active");
                    }
                }

                //测试数据 随机生成的
                var newPageInfo = [];
                var time=new Date();
                for (var i = 0; i < this.pagesize; i++) {
                    newPageInfo[newPageInfo.length] = {
                        timestamp: time,
                        count: (i + (pageIndex - 1) * 20)
                    };
                }
                this.pageCurrent = pageIndex;
                this.arrayData = newPageInfo;
                //如果当前页首页或者尾页,则上一页首页就不能点击,下一页尾页就不能点击
                 if(this.pageCurrent===1){
                        this.fDisabled=true;
                    }else if(this.pageCurrent===this.pageCount){
                        this.lDisabled=true;
                    }else{
                         this.fDisabled=false;
                         this.lDisabled=false;
                    }
              
                //计算分页按钮数据
                if (this.pageCount > this.showPages) {
                    if (pageIndex <= (this.showPages - 1) / 2) {
                        this.showPagesStart = 1;
                        this.showPageEnd = this.showPages - 1;
                        console.log("showPage1")
                    }
                    else if (pageIndex >= this.pageCount - (this.showPages - 3) / 2) {
                        this.showPagesStart = this.pageCount - this.showPages + 2;
                        this.showPageEnd = this.pageCount;
                        console.log("showPage2")
                    }
                    else {
                        console.log("showPage3")
                        this.showPagesStart = pageIndex - (this.showPages - 3) / 2;
                        this.showPageEnd = pageIndex + (this.showPages - 3) / 2;
                    }
                }
                console.log("showPagesStart:" + this.showPagesStart + ",showPageEnd:" + this.showPageEnd + ",pageIndex:" + pageIndex);
            }
        }
    },
    mounted(){
        this.showPage(this.pageCurrent, null, true);
    },
    computed:{
    }
}
 </script>

作者:肖尔_
链接:https://www.jianshu.com/p/a54011ff610a
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 


参考来源于:

https://www.jianshu.com/p/a54011ff610a

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue中BootStrap和分页组件 实现分页功能(页码过多时带省略号) 的相关文章

随机推荐

  • 自动生成代码工具配置文件及技术点详解

    引言 之前发过一篇文章关于自动生成代码的项目 有小伙伴私信说要讲一下具体的思路与配置信息 现在满足一下大家的好奇 配置信息 generator properties配置文件中的具体内容可以看下方的配置信息说明 对应关系 key值 对应含义
  • 程序员一般可以从什么平台接私活?

    公众号 回复 代金券 免费获得腾讯云和阿里云代金券 分享该图文到朋友圈 截图发给本公众号后台 免费获得21个私活平台的快速入口 今天给大家介绍几个程序员可以接私活的平台 私活虽然也没有那么好做 一般私活的性价比远比上班拿工资的低 但是作为一
  • Shiro学习(5)-会话管理

    1 会话管理 相关的 API 会话监听器 配置案例 2 缓存 3 记住我
  • Spice-client源码简要分析

    下载地址 https www spice space org download gtk spice gtk 0 35 tar bz2 或者gitlab https gitlab com spice spice client官方的代码便是sp
  • tcount在哪个文件里_Stata统计分析命令

    Stata统计分析常用命令汇总 一 winsorize极端值处理 范围 一般在1 和99 分位做极端值处理 对于小于1 的数用1 的值赋值 对于大于99 的数用99 的值赋值 1 Stata中的单变量极端值处理 stata 11 0 在命令
  • service手动注入普通类

    package MonitorMessage util import org springframework beans BeansException import org springframework context Applicati
  • Intel TBB库+VS2019+WIN10配置

    目录 配置步骤 下载TBB库 配置环境变量 配置项目属性 在网上找TBB库的资料的时候发现相关资料太少 就想着开一个来记录自己的学习过程 不定期更新 配置步骤 如果能够接触到TBB库 相信你已经有了一定的编程基础 对VS等IDE也有了一定了
  • 【NLP】一文理解Seq2Seq

    seq2seq介绍 1 1 简单介绍 Seq2Seq技术 全称Sequence to Sequence 该技术突破了传统的固定大小输入问题框架 开通了将经典深度神经网络模型 DNNs 运用于在翻译 文本自动摘要和机器人自动问答以及一些回归预
  • 基于系统日志分析进行异常检测

    日志解析 https github com logpai logparser 异常检测 https github com logpai loglizer 预备知识 需要对逻辑回归 决策树 SVM PCA 聚类等有一些了解 论文原文 http
  • 让Redis突破内存大小的限制

    Redis虽然可以实现持久化存储 也是基于数据内存模型的基础之上 单机内存大小限制着Redis存储的数据量 有没有一种替代方案呢 本文介绍一款笔者使用的采用New BSD License 许可协议的软件 SSDB 官网地址 http ssd
  • EF常见数据库连接字符串示例

    数据库类型 字符串 Sqlite Data Source Furion db MySql Data Source localhost Database Furion User ID root Password 000000 pooling
  • 第四周课程总结&试验报告(二)

    实验二 Java简单类与对象 实验目的 掌握类的定义 熟悉属性 构造函数 方法的作用 掌握用类作为类型声明变量和方法返回值 理解类和对象的区别 掌握构造函数的使用 熟悉通过对象名引用实例的方法和属性 理解static修饰付对类 类成员变量及
  • python-gif图生成

    python 用几行代码便生成gif图 代码如下 import imageio filenames 1 jpg 2 jpg 3 jpg images for filename in filenames images append image
  • C语言

    1024G 嵌入式资源大放送 包括但不限于C C 单片机 Linux等 关注微信公众号 嵌入式大杂烩 回复1024 即可免费获取 C语言类型 C的类型分为 对象类型 char int 数组 指针 结构体等 函数类型 不完全类型 什么是不完全
  • 机器学习——支持向量机

    机器学习 支持向量机 一 定义 二 基本概念 1 线性可分 2 分割超平面 3 超平面 4 点相对于分割面的间隔 5 间隔 6 支持向量 三 寻找最大间隔 1 分隔超平面 2 如何决定最好的参数 3 凸优化 4 拉格朗日对偶 拉格朗日乘子法
  • Java的String类

    Java中String是常量 其对象一旦创建完毕就无法 改变 当使用 拼接字符串时 会生成新的String对象 而不是向原有的String对象追加内容 对于Java 维护着一个字符串池的概念 String pool String s aaa
  • 服务环境搭建-Traefik网关服务

    服务环境搭建 Traefik网关服务 1 说明 Traefik网关服务用于提供一个实现反向代理 中间件鉴权 服务负载均衡 与服务发现的环境 2 反向代理 2 1 基本概念 EntryPoints 入口点是进入Traefik的网络入口点 它们
  • Python3-面向对象

    Python之面向对象 面向对象 走进对象的世界 类的基本操作 定义 属性 方法 三性 封装 继承 多态 封装 继承 多态 单例 练习 面向对象 对象创建 属性 定义 封装 继承 多态 单例 走进对象的世界 类的基本操作 定义 面向对象 程
  • 未来的工作都被计算机代替,未来10年,50%的工作将被机器取代?而这些职业却无法被取代...

    声明 原创不易 禁止搬运 违者必究 50 的工作将被机器人取代 时代的车轮在前进 更新换代也越来越快了 总是有新兴行业的诞生 也总是有传统的行业退出 变化成为了时代发展的一个重要标志 创建阿里巴巴的马云 之所以能够如此的成功 不得不说他的前
  • Vue中BootStrap和分页组件 实现分页功能(页码过多时带省略号)

    更新 其实vue中的分页插件结合上 spring data jpa 使用的效果非常好 使用更加方便 vue组件中 div class box footer no border div