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进行拖拽
Jul 20 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
JS出现失效的情况总结
Jan 20 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
Vue页面刷新记住页面状态的实现
Dec 27 Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 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通过字符串调用函数示例
2014/03/02 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
YII实现分页的方法
2014/07/09 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
PHP设置进度条的方法
2015/07/08 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
Python实现图像几何变换
2015/07/06 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
python小白学习包管理器pip安装
2020/06/09 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
高三学生评语大全
2014/04/25 职场文书
吴仁宝观后感
2015/06/09 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL