Vue Cli与BootStrap结合实现表格分页功能


Posted in Javascript onAugust 18, 2017

1、首先需要在vue-cli项目中配置bootstrap,jquery

2、 然后新建vue文件,如index.vue,index.vue内容如下:

3、配置路由即可运行实现。

<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>

总结

以上所述是小编给大家介绍的Vue Cli与BootStrap结合实现表格分页功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
基于JQuery的asp.net树实现代码
Nov 30 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
js选项卡的实现方法
Feb 09 Javascript
Javascript获取表单名称(name)的方法
Apr 02 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
Dec 30 Javascript
javascript事件模型介绍
May 31 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
vue.js实现三级菜单效果
Oct 19 Javascript
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
解决微信二次分享不显示摘要和图片的问题
Aug 18 #Javascript
详谈innerHTML innerText的使用和区别
Aug 18 #Javascript
史上最全JavaScript常用的简写技巧(推荐)
Aug 17 #Javascript
webpack2.0配置postcss-loader的方法
Aug 17 #Javascript
微信小程序 获取javascript 里的数据
Aug 17 #Javascript
JavaScript全屏和退出全屏事件总结(附代码)
Aug 17 #Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
Aug 17 #Javascript
You might like
PHP+javascript模拟Matrix画面
2006/10/09 PHP
php横向重复区域显示二法
2008/09/25 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
python迭代器的使用方法实例
2013/11/21 Python
Python判断操作系统类型代码分享
2014/11/22 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python 容器总结整理
2017/04/04 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
Python识别处理照片中的条形码
2020/11/16 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
职工运动会邀请函
2014/01/19 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
旅游投诉信范文
2015/07/02 职场文书