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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
javascript学习笔记(五)正则表达式
Apr 08 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
对js中回调函数的一些看法
Aug 29 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
vue添加axios,并且指定baseurl的方法
Sep 19 Javascript
JavaScript中将值转换为字符串的五种方法总结
Jun 06 Javascript
Vue实现点击箭头上下移动效果
Jun 11 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
Aug 17 Javascript
基于JavaScript实现简单抽奖功能代码实例
Oct 20 Javascript
vue中使用腾讯云Im的示例
Oct 23 Javascript
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实现的在线人员函数库
2008/04/09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
html读出文本文件内容
2007/01/22 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
Python socket实现的文件下载器功能示例
2019/11/15 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
Europcar比利时:租车
2019/08/26 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
副总经理岗位职责
2014/03/16 职场文书
利群广告词
2014/03/20 职场文书
经典团队口号大全
2014/06/21 职场文书
大专学生求职信
2014/07/04 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
MySQL如何解决幻读问题
2021/08/07 MySQL
python 多态 协议 鸭子类型详解
2021/11/27 Python
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL
Python加密技术之RSA加密解密的实现
2022/04/08 Python