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 相关文章推荐
JS getStyle获取最终样式函数代码
Apr 01 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
Jan 27 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
video.js使用改变ui过程
Mar 05 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
React Navigation 使用中遇到的问题小结
May 08 Javascript
深入Vue-Router路由嵌套理解
Aug 13 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
解决vue $http的get和post请求跨域问题
Jun 07 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP has encountered an Access Violation
2007/01/15 PHP
fgetcvs在linux的问题
2012/01/15 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
document.forms用法示例介绍
2014/06/26 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
python模拟实现分发扑克牌
2020/04/22 Python
详解python logging日志传输
2020/07/01 Python
python定义具名元组实例操作
2021/02/28 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
大学生简历中个人的自我评价
2013/10/06 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
就业意向书范文
2014/04/01 职场文书
幸福家庭标语
2014/06/27 职场文书
物业管理专业自荐信
2014/07/01 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
离婚答辩状范文
2015/05/22 职场文书
八月迷情观后感
2015/06/11 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python