vue.js表格分页示例


Posted in Javascript onOctober 18, 2016

分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。

效果:

vue.js表格分页示例

代码:

1.注册一个组件

js

Vue.component('pagination',{
 template:'#paginationTpl',
 replace:true,
 props:['cur','all','pageNum'],
 methods:{
 //页码点击事件
 btnClick: function(index){
 if(index != this.cur){
  this.cur = index;
 }
 }
 },
 watch:{
 "cur" : function(val,oldVal) {
 this.$dispatch('page-to', val);
 }
 },
 computed:{
 indexes : function(){
 var list = [];
 //计算左右页码
 var mid = parseInt(this.pageNum / 2);//中间值
 var left = Math.max(this.cur - mid,1);
 var right = Math.max(this.cur + this.pageNum - mid -1,this.pageNum);
 if (right > this.all ) { right = this.all}
 while (left <= right){
  list.push(left);
  left ++;
 }
 return list;
 },
 showLast: function(){
 return this.cur != this.all;
 },
 showFirst: function(){
 return this.cur != 1;
 }
 }
 });

模板:

<script type="text/template" id="paginationTpl">
 <nav v-if="all > 1">
 <ul class="pagination">
 <li v-if="showFirst"><a href="javascript:" @click="cur--">«</a></li>
 <li v-for="index in indexes" :class="{ 'active': cur == index}">
 <a @click="btnClick(index)" href="javascript:">{{ index }}</a>
 </li>
 <li v-if="showLast"><a @click="cur++" href="javascript:">»</a></li>
 <li><a>共<i>{{all}}</i>页</a></li>
 </ul>
 </nav>
</script>

HTML:

<div id='item_list'>
 ...
 <pagination :cur="1" :all="pageAll" :page-num="10" @page-to="loadList"></pagination>
</div>

当点击分页链接的时候,通过watch cur,子组件分发 page-to 事件,通过 @page-to="loadList" 标签指定使用父组件 loadList 方法处理事件,父组件接收到page值然后ajax加载数据,根据服务端返回计算并更新自身的 pageAll 值,因为子组件prop通过 :all="pageAll" 动态绑定了父组件的pageAll对象,所以子组件会联动更新。

附上一个简单的表格组件例子:

var vm = new Vue({
 el: "#item_list",
 data: {
 items : [],
 //分页参数
 pageAll:0, //总页数,根据服务端返回total值计算
 perPage:10 //每页数量
 },
 methods: {
 loadList:function(page){
 var that = this;
 $.ajax({
  url : "/getList",
  type:"post",
  data:{"page":page,"perPage":this.perPage},
  dataType:"json",
  error:function(){alert('请求列表失败')},
  success:function(res){
  if (res.status == 1) {
  that.items = res.data.list;
  that.perPage = res.data.perPage;
  that.pageAll = Math.round(res.data.total / that.perPage);//计算总页数
  }
  }
 });
 },
 //初始化
 init:function(){
 this.loadList(1);
 }
 }
 });
 vm.init();

精彩专题分享:jquery分页功能操作 JavaScript分页功能操作

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

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

Javascript 相关文章推荐
ext实现完整的登录代码
Aug 08 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
javascript中的正则表达式使用指南
Mar 01 Javascript
详解JS中Array对象扩展与String对象扩展
Jan 07 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
May 25 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
js实现星星海特效的示例
Sep 28 Javascript
Selenium执行JavaScript脚本的方法示例
Dec 31 Javascript
用JS实现飞机大战小游戏
Jun 09 Javascript
ant design vue的form表单取值方法
Jun 01 Vue.js
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 #Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 #Javascript
微信小程序 教程之WXSS
Oct 18 #Javascript
微信小程序 教程之引用
Oct 18 #Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 #Javascript
微信小程序 教程之事件
Oct 18 #Javascript
微信小程序 教程之模板
Oct 18 #Javascript
You might like
PHP常用正则表达式集锦
2014/08/17 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
ThinkPHP控制器详解
2015/07/27 PHP
Symfony核心类概述
2016/03/17 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
从零学Python之入门(五)缩进和选择
2014/05/27 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
关于Django外键赋值问题详解
2017/08/13 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
教师应聘个人求职信
2013/12/10 职场文书
宣传工作经验材料
2014/06/02 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
2014年管理工作总结
2014/11/22 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
学校德育工作总结2015
2015/05/11 职场文书
我的1919观后感
2015/06/03 职场文书
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫