使用Bootstrap4 + Vue2实现分页查询的示例代码


Posted in Javascript onDecember 21, 2017

写在前面

工程为前后端分离设计,使用Nginx为前端资源服务器,同时实现后台服务的反向代理。后台为Java Web工程,使用Tomcat部署服务。

  1. 前端框架:Bootstrap4,Vue.js2
  2. 后台框架:spring boot,spring data JPA
  3. 开发工具:IntelliJ IDEA,Maven

实现效果:

使用Bootstrap4 + Vue2实现分页查询的示例代码

会员信息

如何使用Bootstrap+Vue来实现动态table,数据的新增删除等操作,请查看使用Bootstrap + Vue.js实现表格的动态展示、新增和删除 。交代完毕,本文主题开始。

一、使用Bootstrap搭建表格

表格区

<div class="row">
   <table class="table table-hover table-striped table-bordered table-sm">
    <thead class="">
    <tr>
     <th><input type="checkbox"></th>
     <th>序号</th>
     <th>会员号</th>
     <th>姓名</th>
     <th>手机号</th>
     <th>办公电话</th>
     <th>邮箱地址</th>
     <th>状态</th>
    </tr>
    </thead>
    <tbody>
    <tr v-for="(user,index) in userList">
     <td><input type="checkbox" :value="index" v-model="checkedRows"></td>
     <td>{{pageNow*10 + index+1}}</td>
     <td>{{user.id}}</td>
     <td>{{user.username}}</td>
     <td>{{user.mobile}}</td>
     <td>{{user.officetel}}</td>
     <td>{{user.email}}</td>
     <td v-if="user.disenable == 0">正常</td>
     <td v-else>注销</td>
    </tr>
    </tbody>
   </table>
  </div>

分页区

<div class="row mx-auto">
   <ul class="nav justify-content-center pagination-sm">
    <li class="page-item">
     <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="page-link"><i class="fa fa-fast-backward" @click="switchToPage(0)"> </i></a>
    </li>
    <li class="page-item">
     <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="page-link"><i class="fa fa-backward" @click="switchToPage(pageNow-1)"></i></a>
    </li>
    <li class="page-item" v-for="n in totalPages" :class="{active:n==pageNow+1}">
     <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="switchToPage(n-1)" class="page-link">{{n}}</a>
    </li>
    <li class="page-item">
     <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="page-link"><i class="fa fa-forward" @click="switchToPage(pageNow+1)"></i></a>
    </li>
    <li class="page-item">
     <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="page-link"><i class="fa fa-fast-forward" @click="switchToPage(totalPages-1)"></i></a>
    </li>
   </ul>
  </div>

二、初始化Vue对象及数据

创建Vue对象

var vueApp = new Vue({
  el:"#vueApp",
  data:{
   userList:[],
   perPage:10,
   pageNow:0,
   totalPages:0,
   checkedRows:[]
  },
  methods:{
   switchToPage:function (pageNo) {
    if (pageNo < 0 || pageNo >= this.totalPages){
     return false;
    }
    getUserByPage(pageNo);
   }
  }
 });

初始化数据

function getUserByPage(pageNow) {
 $.ajax({
  url:"/user/"+pageNow,
  success:function (datas) {
  vueApp.userList = datas.content;
  vueApp.totalPages = datas.totalPages;
  vueApp.pageNow = pageNow;
  },
  error:function (res) {
  console.log(res);
  }
 });
 }

完整js代码:

<script>
 var vueApp = new Vue({
 el:"#vueApp",
 data:{
  userList:[],
  perPage:10,
  pageNow:0,
  totalPages:0,
  checkedRows:[]
 },
 methods:{
  switchToPage:function (pageNo) {
  if (pageNo < 0 || pageNo >= this.totalPages){
   return false;
  }
  getUserByPage(pageNo);
  }
 }
 });
 getUserByPage(0);
 function getUserByPage(pageNow) {
 $.ajax({
  url:"/user/"+pageNow,
  success:function (datas) {
  vueApp.userList = datas.content;
  vueApp.totalPages = datas.totalPages;
  vueApp.pageNow = pageNow;
  },
  error:function (res) {
  console.log(res);
  }
 });
 }
</script>

三、使用JPA实现分页查询

controller接收请求

/**
 * 用户相关请求控制器
 * @author louie
 * @date 2017-12-19
 */
@RestController
@RequestMapping("/user")
public class UserController {

 @Autowired
 private UserService userService;

 /**
 * 分页获取用户
 * @param pageNow 当前页码
 * @return 分页用户数据
 */
 @RequestMapping("/{pageNow}")
 public Page<User> findByPage(@PathVariable Integer pageNow){
 return userService.findUserPaging(pageNow);
 }
}

JPA分页查询

@Service
public class UserServiceImpl implements UserService {

 @Value("${self.louie.per-page}")
 private Integer perPage;

 @Autowired
 private UserRepository userRepository;

 @Override
 public Page<User> findUserPaging(Integer pageNow) {
 Pageable pageable = new PageRequest(pageNow,perPage,Sort.Direction.DESC,"id");
 return userRepository.findAll(pageable);
 }
}

好了,至此功能完成,工程代码已在GitHub中分享,您可以 点击查看或下载 ,拥抱开源,共享让世界更美好。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
线路分流自动跳转代码;希望对大家有用!
Dec 02 Javascript
JS滚轮事件onmousewheel使用介绍
Nov 01 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
jqTransform美化表单
Oct 10 Javascript
vue动态生成dom并且自动绑定事件
Apr 19 Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
Dec 20 #Javascript
代码详解Vuejs响应式原理
Dec 20 #Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 #Javascript
在一个页面实现两个zTree联动的方法
Dec 20 #Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 #Javascript
Angular2+如何去除url中的#号详解
Dec 20 #Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 #Javascript
You might like
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP实现简易图形计算器
2020/08/28 PHP
json跟xml的对比分析
2008/06/10 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
python中zip和unzip数据的方法
2015/05/27 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
python 实现生成均匀分布的点
2019/12/05 Python
如何利用Python写个坦克大战
2020/11/18 Python
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
房地产还款计划书
2014/01/10 职场文书
高中军训感言1000字
2014/03/01 职场文书
兴趣小组活动总结
2014/05/05 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
禁止酒驾标语
2014/06/25 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
教师学期个人总结
2015/02/11 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
学校标语口号大全
2015/12/26 职场文书
导游词之清晏园
2019/11/22 职场文书