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 相关文章推荐
JavaScript Event学习第二章 Event浏览器兼容性
Feb 07 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
Feb 27 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
用js简单提供增删改查接口
May 12 Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
Nov 12 Javascript
如何通过JS实现转码与解码
Feb 21 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 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 memcache扩展的三种安装方法
2009/04/26 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
express 项目分层实践详解
2018/12/10 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Python流程控制 if else实现解析
2019/09/02 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
办理退休介绍信
2014/01/09 职场文书
小学教师管理制度
2014/01/18 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
财务工作失职检讨书
2014/11/21 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers